阅读《第一行代码》的问题

看到《第一行代码》的书中,有这样一个知识点,就是可以通过onSaveInstanceState(Bundle bundle)
方法来保存在活动被销毁后来保存数据,可是我使用finish()和Back键也是不可以调用
此方法,后来网上说要系统自动销毁活动时才会调用这个方法,我想模拟系统自动销毁活动
不知道大神们有没有什么好的办法?

Android模拟机上有一个旋转屏幕的,点一下,然后你在log上就可以活动具体信息,打印你就可以直观的看到了

当活动处于停止状态时,由于系统的内存不足,可能会被回收,导致临时数据丢失,影响用户体验。可以使用onSaveInstanceState()方法保存临时数据。因为onSaveInstanceState()方法一定会在活动被回收之前调用。
onSaveInstanceState()中携带一个Bundle类型的参数。——Bundle提供一系列的方法用于保存数据,比如:putString() 保存字符串;putInt() 保存整数类型等。每个保存方法以键—值对的形式保存数据(键用于后面从Bundle中取值)。
保存数据:

protected void onSaveInstanceState(Bundle bundle){ super.onSaveInstanceState(outState); String tempData = textView.getText();//textView指活动中声明的TextView控件 bundle.putString("data",tempData); }
恢复数据:在onCreat()方法中有Bundle类型的参数,一般情况下都是null。但是当活动被系统回收之前有通过onSaveInstanceState()方法来保存数据的话,这个参数就会带有之前所保存的全部数据,只需要再通过相应的取值方法将数据取出即可。

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //隐藏标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); if (savedInstanceState != null) { String tempData = savedInstanceState.getString("data"); } …… }

最简单的办法是,设置:开发者选项,打开开发者选项,选择不保留活动,这样你按home键返回桌面,activity就会自动销毁。

方法回调时机 : 在 Activity 被系统销毁之后 恢复 Activity 时被调用, 只有销毁了之后重建的时候才调用, 如果内存充足, 系统没有销毁这个 Activity, 就不需要调用;

-- Bundle 对象传递 : 该方法保存的 Bundle 对象在 Activity 恢复的时候也会通过参数传递到 onCreate() 方法中;

-- 位于生命周期位置吧 : 该方法在 onResume() 方法之前保存信息;