我在android中有这个问题。我有一个主要活动,用这个
调用一个帖子 Runnable work = new Runnable() {
public void run() {
while (kill) {
try {
Thread.sleep(5000);
connect();
} catch (InterruptedException ex) {
Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
};
在MainActivity中杀死它的公共布尔值。 我该怎么做才能保存线程所以当我恢复活动时我仍然可以杀死线程?
答案 0 :(得分:1)
为什么要删除简历中的帖子?
为什么不在恢复部分启动线程,然后放入finally块来处理connect()
被中断的事实,然后当它再次启动时你只需要重新连接并进行操作。 / p>
对于移动设备,最好的办法是勾选一些持久存储空间,这样如果您被打断,可以在Activity
再次启动时继续存储。
你很有可能被打断,所以设计它。
线程可能被操作系统杀死,因此以后无需保存和终止。
如果您确实需要执行此类操作,请启动RemoteService
,因为它将在与Activity
不同的流程中运行,并且更有可能保持不变。
您可能想看看这个问题:
答案 1 :(得分:0)
我认为你想做一些更接近this solution建议的事情。
但是,如果你真的想继续在Thread
中进行,那么我建议你从Thread
扩展一个新类,并添加一个名为killMe()
的方法。这将修改(现在私有)布尔kill
标志。然后,在onRetainNonConfigurationInstance()
中,您可以返回此Thread
,然后您可以在onResume
中再次检索该killMe()
。如果您返回并且活动尚未被杀死,那么没关系,您可以在现有Thread
上致电 @Override
public Object onRetainNonConfigurationInstance() {
return thread;
}
。
示例:
{{1}}