在使用app的过程中有可能会发生突发情况,杀死我们的APP?
突发情况有哪些呢?比如屏幕旋转,按Home键,recreate(),锁屏,手机内存不够APP被Kill等,那么有这些情况我们数据还没来的几保存应该怎么做呢?Google已经有了办法了,那就是覆盖onSaveInstanceState()方法来接受一个Bundle类型的参数,我们可以将该activity的信息和状态数据存入此Bundle中。这样,即使该activity在后台被系统摧毁,然后重新回到前台的时候,在调用onCreate()方法时,该Bundle对象会传入onCreate方法的参数中。开发者可以在onCreate中取出自己保存的数据。
比如我有一个recreate 的页面,需要保存一个临时变量isSelected来判断用户是否点击了页面.实现如下:
@OverridePRotected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putBoolean("isSelected", isSelected);}那么如何恢复保存的数据呢?onCreate()方法的函数中有一个Bundle saveInstanceState 的参数,没错数据就是存储在这里的protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { isSelected = savedInstanceState.getBoolean("isSelected"); }在哪里调用saveInstanceState,大家可以在activity的各生命周期打印一下,很简单的.
新闻热点
疑难解答