恢复主要活动后杀死一个线程?

时间:2011-06-16 23:58:42

标签: android multithreading save kill onresume

我在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中杀死它的公共布尔值。 我该怎么做才能保存线程所以当我恢复活动时我仍然可以杀死线程?

2 个答案:

答案 0 :(得分:1)

为什么要删除简历中的帖子?

为什么不在恢复部分启动线程,然后放入finally块来处理connect()被中断的事实,然后当它再次启动时你只需要重新连接并进行操作。 / p>

对于移动设备,最好的办法是勾选一些持久存储空间,这样如果您被打断,可以在Activity再次启动时继续存储。

你很有可能被打断,所以设计它。

线程可能被操作系统杀死,因此以后无需保存和终止。

如果您确实需要执行此类操作,请启动RemoteService,因为它将在与Activity不同的流程中运行,并且更有可能保持不变。

您可能想看看这个问题:

Android Remote Service

答案 1 :(得分:0)

我认为你想做一些更接近this solution建议的事情。

但是,如果你真的想继续在Thread中进行,那么我建议你从Thread扩展一个新类,并添加一个名为killMe()的方法。这将修改(现在私有)布尔kill标志。然后,在onRetainNonConfigurationInstance()中,您可以返回此Thread,然后您可以在onResume中再次检索该killMe()。如果您返回并且活动尚未被杀死,那么没关系,您可以在现有Thread上致电 @Override public Object onRetainNonConfigurationInstance() { return thread; }

示例:

{{1}}