android停止某个函数执行,当一个Android应用程序关闭或失去焦点时,如何调用一个方法?...

匿名用户

您可以在这里获得更多信息:http://developer.android.com/training/basics/activity-lifecycle/stopping.html

即使我认为您已经阅读了它,因为您已经研究了activity的生命周期,您也可以在第一个图中看到ondestroy()是在onstop()之后调用的,并且这个调用完全由系统管理:您不应该期望任何行为。系统将自行决定何时调用此方法,有时,此方法永远不会被调用(请参阅此处:http://developer.android.com/reference/android/app/activity.html)。当系统需要内存时,您的activity将传入onstop(),仅此而已。

因此,为了回答您的第二个问题,您应该阅读有关ondestroy()方法的文档中的注释:

注意:不要指望这个方法被调用为保存数据的地方!例如,如果一个activity正在内容提供程序中编辑数据,那么这些编辑应该在onPause()或onSaveInstanceState(Bundle)中提交,而不是在这里提交。这种方法通常用于释放与activity相关联的线程之类的资源,这样一个被破坏的activity就不会在其馀应用程序仍在运行时留下这些东西。在某些情况下,系统会简单地终止activity的托管进程,而不调用其中的此方法(或任何其他方法),因此不应使用它来执行打算在进程走开后仍然存在的事情。

所以很明显,这是一个不好的地方,使你的清理过程。因此您应该使用onpause()或onstop()方法之一。

onstop()在文档中的描述如下:

当用户不再可见您时调用。接下来,您将收到onrestart(),ondestroy()或者什么都不收到,具体取决于以后的用户activity。

onpause()在文档中的描述如下:

作为activity生命周期的一部分,当一个activity进入后台,但还没有被杀死。[...]当activity B在activity A前面启动时,会在A上调用这个回调,直到A的onPause()返回后才会创建B,所以在这里一定不要做冗长的事情。[...]在系统需要更多内存的情况下,它可能会关闭暂停的进程以回收资源。

我们现在知道onpause()的设计目的是允许您保存数据,而且在执行onpause()之后,系统可能会终止您的进程。因此,在onpause()中进行清理似乎是最安全的地方,因为您非常确定每次都会调用它。

此外,正如你可以读到的,在这里清理你的应用程序会使你的速度变慢,但无论如何,在每次获得或失去焦点时清理和重新创建数据库是一个非常繁重的过程。。。

恢复:在onPause()方法中创建清理进程,在onResume()中创建初始化进程。请记住,您的应用程序在这种过程中可能会非常慢。

希望这能帮到你。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值