2014-12-22 29 views
1

我的Android应用程序使用第三方库,我使用的方法之一是长时间运行,所以我从一个单独的线程调用它。如何杀死/处理Android中的空闲线程(通过调用第三方应用程序阻止)

问题

的是,在某些情况下方法是从一个单独的线程调用挂起(该库的已确认的bug),因此我的线程暂停。

据我所知,在Android/Java中没有办法杀死线程。停止/完成线程的正确方法是中断线程并正确处理“中断”异常。但是由于问题出在我没有控制权的第三方,我最终得到了空闲/处理线程。

为了解决这个问题,我实现了检测这个条件的逻辑并“绕过”它,以便我的应用程序正常工作。但我担心我的线程挂起并保留一些资源。

问题:

  • 我应该真正关心的悬吊线?
  • 有什么办法可以杀死/清除那个线程?
  • 也许我想念一件非常简单的事情?

谢谢,任何想法都欢迎!

回答

1

你的第一个问题答案是肯定的。有额外的,不相关的线程可以影响其他应用程序(内存使用等)

第二个答案是否定的。所以你最终会得到额外的,不相关的线程。 (被称为catch22)。

我管理几个多线程/任务框架,我完全按照你所做的做。这就是所谓的删除线程。如果它没有响应,并且可能永久挂起,那么你可以做的最好的做法是忽略它,并且可能用新线程替换它,只要清除/替换周期本身不会导致问题。问题是多余的线程对其他应用程序产生了负面影响。