如何解决为了在应用程序出口处终止工作线程,我们有哪些钩子
|| 我正在从应用程序的\'main \'线程中产生新的工作线程。只要应用程序处于活动状态,就经常需要这些线程来执行某些操作。而且,当应用程序退出时,我确实希望正确清理所有工作线程(无论这意味着什么)。为此,生命周期方法是唯一的方法吗?应用程序退出时是否收到意图/通知?如果是,我们可以在此类意图/通知中注册广播接收器以进行所需的清理吗? 谢谢, 阿育Code Snippet:
导入android.app.Activity;
导入android.os.Bundle;
导入android.util.Log;
公共类SomeThreadTest扩展了Activity {
/** 在第一次创建活动时调用。 * /
线程t = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
t = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(15000);
Log.d(\"SomeThreadTest\",\"Thread wokeup now\");
} catch (InterruptedException e) {
Log.d(\"SomeThreadTest\",\"Thread interrupted exception called!\");
e.printStackTrace();
return;
}
if (Thread.interrupted()) {
Log.d(\"SomeThreadTest\",\"I\'m interrupted!\");
}
}
}
},\"TestThread\");
t.setDaemon(true);
t.start();
}
}
解决方法
考虑调用workerThread.setDaemon(true),该线程将告诉线程是服务提供者,如果非守护程序主线程退出了,请杀死我。
,Android具有守护程序线程和关闭挂钩,这在这里可能对您有帮助,因为该应用程序在其自己的VM中执行。
当虚拟机退出时,后台驻留程序线程退出,并且不会停止虚拟机退出。创建线程后,调用thread.setDaemon(true)将该线程标记为守护程序线程。因此,如果标记所有工作线程守护程序线程,则VM退出时将处理这些线程。
另外,当虚拟机退出时,可以使用shutdown钩子自己清理线程。要注册关闭挂钩,请调用Runtime.addShutdownHook(Thread),并传递尚未启动的线程。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。