2014-12-22 28 views
1

我的Android應用程序使用第三方庫,我使用的方法之一是長時間運行,所以我從一個單獨的線程調用它。如何殺死/處理Android中的空閒線程(通過調用第三方應用程序阻止)

問題

的是,在某些情況下方法是從一個單獨的線程調用掛起(該庫的已確認的bug),因此我的線程暫停。

據我所知,在Android/Java中沒有辦法殺死線程。停止/完成線程的正確方法是中斷線程並正確處理「中斷」異常。但是由於問題出在我沒有控制權的第三方,我最終得到了空閒/處理線程。

爲了解決這個問題,我實現了檢測這個條件的邏輯並「繞過」它,以便我的應用程序正常工作。但我擔心我的線程掛起並保留一些資源。

問題:

  • 我應該真正關心的懸吊線?
  • 有什麼辦法可以殺死/清除那個線程?
  • 也許我想念一件非常簡單的事情?

謝謝,任何想法都歡迎!

回答

1

你的第一個問題答案是肯定的。有額外的,不相關的線程可以影響其他應用程序(內存使用等)

第二個答案是否定的。所以你最終會得到額外的,不相關的線程。 (被稱爲catch22)。

我管理幾個多線程/任務框架,我完全按照你所做的做。這就是所謂的刪除線程。如果它沒有響應,並且可能永久掛起,那麼你可以做的最好的做法是忽略它,並且可能用新線程替換它,只要清除/替換週期本身不會導致問題。問題是多餘的線程對其他應用程序產生了負面影響。