3

关闭/完成活动并仍然希望它通过的android方式是onPause什么?onStoponDestroy

我知道Activity.finish(),但这只会保证onDestroy()不会调用其他两个。原因,基于 android 文档,应该在其中完成数据库访问,onStop()这样它就不会减慢用户的速度,这是我的意图,将所有“保存”保存到onStop(),但是,我只是注意到,当finish()叫做...

那么..这种情况下的解决方案是什么?我的意思是,我可以创建一个boolean变量,但有没有更复杂的方法?甚至另一种结束活动的方式,比如调用onDestory()是不正确的做法吗?

编辑

对不起,我打错了那部分,我的意思是说保存到数据库中onStop(),而不是onDestroy()

虽然 onPause() 方法在 onStop() 之前调用,但您应该使用 onStop() 来执行更大、更占用 CPU 的关闭操作,例如将信息写入数据库。

资源

4

2 回答 2

1

调用 Activity.finish 确实经历了活动生命周期:http: //developer.android.com/training/basics/activity-lifecycle/stopping.html

onDestroy()的文档还指出:

注意:不要指望这个方法被称为保存数据的地方!

onPause()状态:

This callback is mostly used for saving any persistent state the activity is editing, to present a "edit in place" model to the user and making sure nothing is lost if there are not enough resources to start the new activity without first killing this one. This is also a good place to do things like stop animations and other things that consume a noticeable amount of CPU in order to make the switch to the next activity as fast as possible, or to close resources that are exclusive access such as the camera.

最后一件事,对于onStop()

请注意,在调用 onPause() 方法后系统没有足够内存来保持活动进程运行的低内存情况下,可能永远不会调用此方法。

这让您只需使用onPause()作为覆盖和执行一些保存内容的方法。它确实被称为。

在这里找到了一个相关的问题:finish() 和 Activity 生命周期

于 2013-05-11T10:19:46.517 回答
0

根据文档,“如果系统必须在紧急情况下恢复内存,则可能不会调用 onStop() 和 onDestroy()。因此,您应该使用 onPause() 将关键的持久数据(例如用户编辑)写入存储. 但是,您应该选择在 onPause() 期间必须保留哪些信息,因为此方法中的任何阻塞过程都会阻止过渡到下一个活动并减慢用户体验。”

这意味着,OnPause()是 DB 操作的正确方法,但如果它们太重而无法阻止 UI 转换,那么它们应该在OnStop()中完成

于 2015-02-16T11:03:20.893 回答