Android中活动被回收了怎么办

当一个活动进入到了停止状态,是有可能被系统回收的。按下返回键的时候,活动被重新创建一次,但是里面的数据就没办法重现:

这时Activity中提供了一个onSaveInstanceState()回调方法,保证在活动被回收之前一定会被调用。

onSaveInstanceState()方法会携带一个Bundle类型的参数,Bundle提供了一系列的方法用于保存数据,如putString(),putInt()。

//活动被回收后数据的保存操作方法@Overrideprotected void onSaveInstanceState(Bundle outState) {    super.onSaveInstanceState(outState);    String tempData = "Something you just typed";    outState.putString("data_key",tempData);}

其实onCreate()方法也有一个Bundle类型的参数,一般情况下为null,但是如果活动被系统回收之前有onSaveInstanceState()方法,这个参数就会保存之前活动的数据内容
protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    Log.d(TAG,"onCreate");    setContentView(R.layout.activity_main);    //活动被回收后,再次创建时数据的恢复    if (savedInstanceState!=null){        String tempData = savedInstanceState.getString("data_key");        Log.d(TAG,tempData);    }}

原文地址:https://www.cnblogs.com/peifengyang/p/10572796.html

时间: 2024-10-05 05:50:04

Android中活动被回收了怎么办的相关文章

Android中活动条ActionBar的详细使用

图一 图二 图三 图四 图五 ActionBar其提供的功能总结 图一使用ActionBar显示选项菜单项 menu_mainxml代码 启用程序图标导航 如何添加Action View 图二Activity代码区 menu_mainxml代码 clockxml 图三使用ActionBar实现Tab导航 创建ActionBar实现Tab导航步骤 MainActivity代码 DummyFragmentjava代码 图四Android 30之前的Fragment支持 Mainxml代码 MainA

Android中活动的四种启动模式

1.standard:每次启动都会创建该活动的一个新的实例 2.singleTop:当栈顶有该活动,则直接使用,不创建 3.singleTask:会在栈中查找是否存在该活动的实例,如果有,直接使用 并把在这个活动之上的所有活动统统出栈 4.singleInstance:启动一个新的返回栈来管理这个活动 而这个新的返回栈是用来管理那个需要共享的活动

android中活动的启动模式

活动的启动模式 1.standard 2.singleTop 3.singleTask 4.singleInstance standard为默认的活动启动模式(无论活动是否在栈顶,都会创建一个新的活动) sing了Top(如何栈顶有了新的活动就不会创建新的活动,会直接使用已经存在的活动) singleTask(可以解决重复创建栈顶活动的问题,创建新的活动之前会检查是否活动已经存在,若存在就把该活动之前的活动全部清出栈,将该活动显示在栈顶,否则就创建一个新的活动) singleInstance(该

Android防止活动被回收而丢失数据

首先从写onSaveInstanceState方法,该方法在活动销毁前一定会执行,如下将所需的数据传入到Bundle中 protected void onSaveInstanceState(Bundle outState) {    super.onSaveInstanceState(outState);    String tempData="Some thing save before";    outState.putString("data_key",tem

Android笔记-活动生命周期&Bundle回收临时数据&活动启动模式&常用技巧

Android使用任务(Task)管理活动,是一组存放在返回栈(Back Stack)里的活动的合集: 系统总是显示栈顶活动给用户: 启动新活动->新活动入栈 按下Back键或调用finish()->栈顶活动出栈 活动生命周期的四种状态: 1. 运行状态:处于栈顶 2. 暂停状态:不处于栈顶,但仍然可见 3. 停止状态:不处于栈顶,完全不可见,系统仍然保存其状态和成员变量,但不可靠 4. 销毁状态:从栈中移除,活动被系统回收 Activity的七个回调方法: 1. onCreate():活动第

Android中简单活动窗口的切换--Android

本例实现Android中简单Activity窗口切换:借助intent(意图)对应用操作(这里用按钮监听)等的描述,Android根据描述负责找对应的组件,完成组件的调用来实现活动的切换……案例比较简单直接附上代码了哈. 1.建两个Activity类,分别为MainActivity.java和GuideActivity.java…… MainActivity.java(核心文件): package livetelecast.thonlon.example.cn.thonlonliveteleca

Android中的缓存处理

一.缓存介绍 (一).Android中缓存的必要性: 1.没有缓存的弊端: 流量开销:对于客户端--服务器端应用,从远程获取图片算是经常要用的一个功能,而图片资源往往会消耗比较大的流量. 加载速度:如果应用中图片加载速度很慢的话,那么用户体验会非常糟糕. 那么如何处理好图片资源的获取和管理呢?异步下载+本地缓存 2.缓存带来的好处: 1. 服务器的压力大大减小: 2. 客户端的响应速度大大变快(用户体验好): 3. 客户端的数据加载出错情况大大较少,大大提高了应有的稳定性(用户体验好): 4.

【转】Android中的内存管理--不错不错,避免使用枚举类型

原文网址:http://android-performance.com/android/2014/02/17/android-manage-memory.html 本文内容翻译自:http://developer.android.com/training/articles/memory.html 随机存取存储器(RAM)再任何软件开发环境中都是宝贵的资源,但是在移动操作系统中,内存资源更为宝贵,使用时也会收到限制.虽然Android的Dalvik虚拟机有运行时的垃圾回收机制,但是这不意味着你的A

Android中的进程优先级

一.概述 首先解释一下什么是进程: 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的基本单位,进程包含多个线程在运行. 在Android中,默认情况下,同一个应用程序内的所有组件都是运行在同一个进程中的,大部分应用程序也不会去改变它.不过,如果需要指定某个特定组件所属的进程,则可以利用manifest 文件来达到目的. manifest文件中的每种组件元素--. . 和--都支持定义android:process属性,用于指定组件运行的进程.设置此属性即可实