在我的應用程序中,我得到了一些活動和ReceiverThread.class
。越來越多的線程導致我的應用程序滯後
Thread
從兩個不同的活動開始。每當我切換到另一個Activity
並回想以前的活動Activity
它開始一個新的Thread
。因此,如果我在我的應用程序上做了大約10分鐘的測試,或者該應用程序僅用了一段時間,則會有大量的線程打開,並且都會執行相同的操作。 大部分時間線程在TimedWait
。
這給了我錯誤的數據,並導致應用程序滯後,有時它甚至沒有響應。
是否有很好的可能性停止線程onPause()
或onStop()
?因爲許多方法已被棄用。或者如何恢復之前啓動的Thread並阻止Activity
創建新的?
這是我ReceiverThread.run()
:
public void run() {
initiateCAN();
while (true) {
try {
Thread.sleep(60);
mHandler.post(r);
} catch (InterruptedException e) {
break;
}
}
}
如果事情是不明確或丟失,請隨時提問,我會編輯自己的帖子,但不要只是簡單downvote。
而不是'while(true)'你可以使用一個可以控制的標誌來停止線程while(!stop)'。但你應該看看Android服務:http://developer.android.com/guide/components/services.html – TheBronx
,正如我在第一個「Caution!」一節中看到的,我仍然需要使用線程,因爲服務運行在Mainthread中,所以我不能看到使用服務的好處 – Fraggles
該文檔聲明(除非另有說明)。因此,您可以使用該服務創建一個線程(只要服務正在運行,就只運行一個線程),並將數據傳遞給該服務,並將其傳遞給該線程。 –