我的应用程序的第一个 Activity 生成一个线程来执行一些 IO 操作。如果在那一刻用户点击后退按钮,活动被破坏(我可以看到 onDestroy 方法被调用)但线程仍在运行(我可以从日志消息中看到它)。
如果用户随后返回应用程序,则再次创建 Activity,此时我想检查 Thread 是否仍在运行,在这种情况下,不要启动新的。
实现这一目标的最佳方法是什么?
否则:这是糟糕的设计吗?在调用 onDestroy 时确保 Activity 启动的所有线程都被杀死会更好吗?
我的应用程序的第一个 Activity 生成一个线程来执行一些 IO 操作。如果在那一刻用户点击后退按钮,活动被破坏(我可以看到 onDestroy 方法被调用)但线程仍在运行(我可以从日志消息中看到它)。
如果用户随后返回应用程序,则再次创建 Activity,此时我想检查 Thread 是否仍在运行,在这种情况下,不要启动新的。
实现这一目标的最佳方法是什么?
否则:这是糟糕的设计吗?在调用 onDestroy 时确保 Activity 启动的所有线程都被杀死会更好吗?
离开活动时我会杀死线程(除非它需要运行,然后我会使用服务来做到这一点)
要检查您可以使用的线程
thread.getState();
例子:
if (thread.getState() == Thread.State.NEW)
thread.start();
else
{
//Do something else here
}
您可以在 onDestroy 上检查您的线程是否处于活动状态,如果它是 aLive 可以在离开活动时中断线程
public void onDestroy() {
try{
if(myThread!=null & myThread.isAlive()){
myThread.interrupt();
}catch (Exception e) {
e.printStackTrace();
}
}