退出应用程序时停止线程

时间:2012-04-26 14:26:19

标签: android multithreading session

我需要在退出应用程序时停止/中断自己制作的主题。我怎样才能做到这一点? 它应该是单击主页按钮的任何活动,它应该结束主题。

基本上我创建的线程充当会话,当一个注销或他的会话时间到期或应用程序关闭时,我需要停止线程。我已经为前两种情况做了这样的事情,但是对于第三种情况我做不了。事实上,一旦我在我的logCat中退出应用程序,我可以看到线程,当它自然死亡时,我得到一个祝酒通知(我显然不想要)。 tahnks!

5 个答案:

答案 0 :(得分:3)

我不确定我是否真正了解您的需求,但您应该检查与活动生命周期相关的方法:

=> http://developer.android.com/reference/android/app/Activity.html

寻找

onPause()
onResume()
onStop()

然后,在每个事件中,你做任何你想要的线程,如停止它

答案 1 :(得分:1)

首先,由于Android的多任务系统,在回家时,应用程序并未真正退出。当home被命中时,应用程序暂停,因此调用onPaused方法。当您回击时,或者设备决定它需要更多内存时,应用程序将被终止并调用onDestroed(其间有一个步骤)。查看android生命周期。Here

如果我是你,你会把线程停在onDestroyed方法中,因为那是需要再次创建应用程序的地方,但所有这些都在被销毁时被调用。

但是,在你的情况下,你似乎想要的东西更像Service。服务就像一个活动,但在后台运行,没有UI。就像潘多拉如何在没有应用程序的情况下播放音乐一样。使用服务,您可以从任何活动中启动它,并在任何活动被杀死时结束它(onStop或Destroy),您可以执行信号量解决方案,当使用它的所有活动都被杀死时,它会自行杀死。当任何使用它的活动开始时(onCreate或onStart),它会启动服务。然后,您可以通过静态成员访问该服务,或在每个活动中保留它的实例,

答案 2 :(得分:0)

您需要在 onStop 方法中断所有活动的线程。但它并不是一种复杂的做事方式。可能还有其他一些解决方案,比如定义一个扩展android的 Application 类的自定义类,并使用静态方法在该类中设置所需的逻辑等。

答案 3 :(得分:0)

如果你想停止一个单独的线程你的Thread.stop()应该工作。否则请使用Estragon的答案。

答案 4 :(得分:-3)

这是邪恶的,但你试过吗

Process.killProcess(Process.myPid());

在你上一次活动的onDestroy中?

否则,正如estragon所说,http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle将是使用活动的正确方法