退出我的应用程序时,我需要停止/中断我自己创建的线程。我怎样才能做到这一点?它应该是点击任何活动的主页按钮,它应该结束线程。
基本上我创建的线程充当会话,当一个注销或他的会话时间到期或应用程序关闭时,我需要停止线程。对于前两种情况,我已经做到了,但在第三种情况下我无法做到。事实上,一旦我在我的 logCat 中退出应用程序,我就可以看到线程,当它自然死亡时,我会收到一个 toast 通知(我显然不想要)。太棒了!
退出我的应用程序时,我需要停止/中断我自己创建的线程。我怎样才能做到这一点?它应该是点击任何活动的主页按钮,它应该结束线程。
基本上我创建的线程充当会话,当一个注销或他的会话时间到期或应用程序关闭时,我需要停止线程。对于前两种情况,我已经做到了,但在第三种情况下我无法做到。事实上,一旦我在我的 logCat 中退出应用程序,我就可以看到线程,当它自然死亡时,我会收到一个 toast 通知(我显然不想要)。太棒了!
我不确定我真的理解你想要什么,但你应该检查与活动生命周期相关的方法:
=> http://developer.android.com/reference/android/app/Activity.html
寻找
onPause()
onResume()
onStop()
然后,在每个事件中,您都可以对线程做任何您想做的事情,例如停止它
首先,由于Android的多任务系统,应用程序并没有真正退出。当 home 被击中时,应用程序被暂停,所以 onPaused 方法被调用。当您回击时,或者如果设备决定它需要更多内存,应用程序将被终止并调用 onDestroed(两者之间有一个步骤)。查看安卓生命周期。这里
如果我是您,您会将线程停止放在 onDestroyed 方法中,因为这是需要再次创建应用程序的地方,但是在销毁时会调用所有这些方法。
但是,在您的情况下,您似乎想要一些更像Service的东西。服务就像一个活动,但在后台运行,没有 UI。就像潘多拉在没有应用程序启动的情况下播放音乐一样。使用服务,您可以从任何活动中启动它,并在任何活动被终止时结束它(onStop 或在 Destroy 上),您可以执行类似信号量的解决方案,当使用它的所有活动都被终止时,它会自行终止。当使用它的任何活动启动(onCreate 或 onStart)时,它会启动服务。然后您可以通过静态成员访问服务或在每个活动中保留它的实例,
如果您想停止单个线程 yourThread.stop() 应该可以工作。否则使用爱斯特拉冈的答案。
您需要在onStop方法中为所有活动中断线程。但它不是一种复杂的做事方式。可能还有其他一些解决方案,比如定义一个自定义类,它扩展了android的Application类,并使用静态方法在该类中设置您想要的逻辑等。
这是邪恶的,但你有没有尝试
Process.killProcess(Process.myPid());
在你上次活动的 onDestroy 中?
否则,正如 estragon 所说, http: //developer.android.com/reference/android/app/Activity.html#ActivityLifecycle将是使用活动的正确方式