我知道这个问题已被问了一百万次,我自己虽然我已经知道了答案,而且正确的一个是唯一有保证的电话是onPause(),所以你应该把数据保存在那里。
但是,在android文档的许多地方,他们总是建议不要在onPause()方法中做繁重的工作(比如在数据库中写数据),因为它会延迟活动之间的转换。
onPause():此方法通常用于将未保存的更改提交到持久数据,停止动画以及可能消耗CPU的其他内容,等等。它应该做很快的事情,因为下一个活动在返回之前不会恢复。
Killable:是的
然后根据 类似表中的Android Developer Reference Guide。
它说同样的事情但是:
Killable:Pre-HONEYCOMB
他们添加了一个说明:
请注意,这些语义在针对从HONEYCOMB开始的平台的应用程序与针对先前平台的平台之间会略有不同。 从Honeycomb开始,应用程序在其onStop()返回之前不处于killable状态。这可以在调用onSaveInstanceState(Bundle)时产生影响(可以在onPause()之后安全地调用它,并允许和应用程序安全地等到onStop()以保存持久状态。
Killable
请注意上表中的“Killable”列 - 对于那些标记为可填充的方法, 后 该方法返回托管活动的进程可能在任何时候被系统杀死而不执行其代码的另一行。
对于POST-HONEYCOMB(我不关心早期版本): 那么,可以假设任何Android设备(包括不同的ROMS)都能确保在活动上调用onStop吗?这是任何时间消耗存储写入应用程序的最佳位置?
注意:这是非常令人困惑的,因为这里的大多数答案,网站,书籍,甚至在线Android测试都是正确的答案,你应该将它保存在onPause而不是onStop。