解答1: onSaveInstanceState() 当你的程序中某一个Activity A在运行时,主动或被动地运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。B完成以后又会来找A,
这个时候就有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被收回的就直接执行onResume(),跳过onCreate()了。
另外,刚才查看了一下Activity的源码,发现Activity还有个onRestoreInstanceState(Bundle outState)方法.这个方法的描述中也写到在Activity回复先前保存的状态时会被调用.
解答2:
如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
当一个Activity被pause或者stop的时候,这个Activity的对象实际上还是保存在内存中,因此这个Activity中的信息(成员和状态信息)还可以重新获取到.
如果系统为了整理内存而销毁了整合各Activity对象时,系统没法简单的原封不动地恢复先前的Activity对象及其状态信息.
从android手册上来看,Activity中提供了一个方法:onSavedInstanceState(Bundle obj).当系统销毁一个Activity时,会将Activity的状态信息已键值对形式存放在bundle对象中.
第一次启动Activity时,这个bundle对象是空的,null.如果Activity被系统销毁了,然后用户要回退回去看的话,系统会调用这个Activity的onCreate方法,并把bundle对象传递过去.
这个函数有默认的行为,因此就算你不覆盖它,它在Activity中也有实现.
这回我总算明白了为什么onCreate方法的定义是"protected void onCreate (Bundle savedInstanceState)"这个样子的了.
另外,刚才查看了一下Activity的源码,发现Activity还有个onRestoreInstanceState(Bundle outState)方法.这个方法的描述中也写到在Activity回复先前保存的状态时会被调用.
相关推荐
`onSaveInstanceState(Bundle outState)`用于保存Activity的状态,即使Activity被系统销毁并重新创建,也能恢复之前的状态。 在实践中,通过模拟系统Kill Activity的场景,我们可以创建一个名为“KilledTest”的...
如果后台的 Activity 由于某原因被系统回收,可以在被系统回收之前保存当前状态,使用 protected void onSaveInstanceState(Bundle outState) 方法来保存当前状态。除去了栈顶的 Activity,其它的 Activity 都有可能...
在Android系统中,Activity有多种状态,每个状态对应不同的行为和资源管理策略。以下是对Activity生命周期的详细解释: 1. **创建(Creation)** - **onCreate()**: 当Activity首次被创建时,系统会调用这个方法。...
- **绑定服务**:如果服务被某个活动(Activity)或组件绑定,其优先级也会提高,因为系统认为服务与用户当前的交互有关。 - **使用JobScheduler/WorkManager**:这些API允许开发者指定服务执行的条件,比如在网络...
Android应用程序在运行过程中可能会因为各种原因暂时停止或被系统销毁,为了提供良好的用户体验,开发者需要掌握如何有效地保存与恢复Activity的状态。本文将详细介绍Android中用于保存Activity状态的关键方法,并...
如果Activity被重新创建(例如设备旋转),`onCreate(Bundle savedInstanceState)`和`onRestoreInstanceState(Bundle savedInstanceState)`将分别接收之前保存的状态,以恢复Activity到之前的状态。 在...
系统可能会根据内存需求回收底层的 Activity,因此在设计 Activity 时,应妥善处理生命周期方法,以确保数据的正确保存和恢复。 总之,Android 的 Activity 组件是构建用户界面的关键元素,其生命周期管理和状态...
4. `onPause()`:当Activity部分或全部被遮挡时调用,如新Activity启动或来电等,应在此保存临时数据。 5. `onStop()`:当Activity完全不可见时调用,如被新Activity覆盖或应用退到后台。 6. `onDestroy()`:...
- **系统回收**:当系统资源紧张时,即使Activity处于Stopped状态,系统也可能销毁Activity以回收资源。在这种情况下,如果用户再次返回,系统会通过onCreate()和onStart()重建Activity。 理解并熟练掌握Activity...
在深入探讨Activity生命周期之前,我们先理解一下Activity的基本概念。Activity代表一个可视化的用户界面,它可以是手机屏幕上的一个完整窗口,也可以是多个窗口的一部分。在用户与应用的交互过程中,Activity会经历...
- `onRestoreInstanceState()`:当Activity重启时,系统会调用此方法,将之前保存的状态数据恢复。 3. **生命周期的注意事项** - 不要在`onCreate()`和`onStart()`里做耗时操作,这可能导致界面延迟显示。 - `...
Android系统在运行过程中可能会因为内存不足或其他原因导致Activity被销毁并重新创建,此时保存Activity的状态就显得尤为重要。本文将详细讲解Android中保存Activity状态的两种主要方法:使用SharedPreferences和...
- Killed(已杀死):系统为了回收资源,可能会销毁Activity,此时Activity的状态就是已杀死,其内存中的数据也会被清除。 Activity的生命周期包含了一系列的回调方法,这些方法会在特定时刻被调用,允许开发者执行...
在Android开发中,应用的状态保存和恢复是一个至关重要的概念,特别是在用户离开应用或者系统需要回收内存时。这个程序示例,"Android-一个简单的程序用来测试Android应用状态保存和恢复",旨在帮助开发者理解如何...
4. **暂停状态(Paused)**:如果另一个透明或半透明的Activity覆盖了当前Activity,或者用户打开了一个对话框,就会调用onPause()。在此状态下,Activity仍然可见,但部分或全部被遮挡,不再接收用户输入事件。应该...
- 当系统需要回收资源时,可能会调用`onSaveInstanceState(Bundle outState)`,允许保存Activity的状态。这通常发生在`onPause()`之后,因为Activity可能不再可见,甚至可能被销毁。 - 如果Activity被彻底销毁,`...
首先,Activity的销毁通常发生在几种情况:用户按下Back键、Activity自身调用finish()方法、系统为了回收资源而关闭后台Activity,或者当设备屏幕旋转导致屏幕配置改变。在前两种情况中,Activity实例会被彻底销毁,...
如果当前Activity完全被其他Activity覆盖,或者设备屏幕熄灭,Activity将进入停止状态。`onStop()`方法在此时被调用。停止状态下的Activity不再可见,但系统仍然保留其状态。 6. 销毁(Destroyed): Activity在...
如果Activity被系统销毁后,用户返回,系统可能会重新创建Activity,这时会经历`onCreate()`到`onResume()`的完整过程,这被称为Activity的回退栈管理。 7. **配置改变(Configuration Change)**: 当设备配置...