在恢复主活动后终止线程



我在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中杀死它的公共布尔值。我能做些什么来保存线程,这样当我恢复活动时,我仍然可以杀死线程?

为什么要终止简历中的线程?

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

在移动设备的情况下,最好在您所在的一些持久存储中打勾,这样,如果您被中断,您可以在Activity再次启动时继续。

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

线程可能会被操作系统杀死,所以以后没有什么可以保存和杀死的。

如果你真的需要做这样的事情,那么启动一个RemoteService,因为它将在与Activity不同的过程中运行,并且更有可能保持不变。

你可能想看看这个问题:

安卓远程服务

我认为您希望做一些更接近此解决方案建议的事情。

但是,如果您真的想在Thread中继续这样做,那么我建议您从Thread扩展一个新类,并添加一个名为killMe()的方法。这将修改(现在private)布尔kill标志。然后,在您的onRetainNonConfigurationInstance()中,您可以返回此Thread,并可以在onResume中再次检索它。如果您返回并且活动没有被杀死,那么没关系,您可以在现有的Thread上调用killMe()

示例:

 @Override
  public Object onRetainNonConfigurationInstance() {
    return thread;
  }

相关内容

  • 没有找到相关文章

最新更新