Activity被回收时
当一个Activity进入了停止状态时,有可能被系统回收
从另一个Activity回到这个被回收的Activity时,执行的时onCreate方法,如果之前有一些文本框之类的数据在里面就会被清空。
使用onSaveInstanceState()回调方法,解决数据保存的问题
onSaveInstanceState()方法中携带了一个Bundle类型的参数,可以通过putString()方法来保存。
恢复时,在onCreate()方法中,本身就有一个Bundle类型的参数,一般为null
通过getString()方法取出
Activity跳转轨迹
在使用一些不是自己写的项目时,看不懂别人的命名的Activity,不知道对应的界面时
可以新建一个类,继承Activity,在onCreate方法中
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity",getClass().getSimpleName());
}
}
在日志中打印出当前的Activity的实例名
修改原先项目的代码,让所有Activity继承自BaseActivity
Activity管理器
实现直接退出整个程序的功能
不论在哪个界面上都能通过返回键直接退出程序
用一个集合类来保存所有的Activity,对其进行管理
public class ActivityCollector {
public static List<Activity> activities = new ArrayList<Activity>();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
for (Activity activity : activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
}
在每个Activity中 onCreate()方法中调用集合类中的addActivity方法
重写onDestory()方法
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}