關於在Android執行緒池中遇到的問題記載

2021-09-14 05:22:44 字數 498 閱讀 9893

最近在公司收尾專案中碰到乙個人臉識別的問題,在某種特定的情況下,人臉會出現不能識別的情況。

經過重重排查,發現我們寫的launcher在進入後台的時候,主launche會經歷一次正常的生命週期。在ondestroy的時候,沒有釋放整個邏輯驗證。

找到原因後,我直接將執行緒池在ondestroy的時候shutdown並在while(flag)的地方將flag置為false。本來以為這樣就可以停止整個執行緒。但是出乎我的意料,執行緒並沒有停止掉。

於是我思考到底**出了問題,檢查整個邏輯驗證的執行緒。發現裡面用到了lock.wait()和notitfy()的方法。也就是說,當進入wait的時候,並不會進行下一次迴圈,會一直阻塞在wait()。

ok,接下來直接呼叫執行緒的interrupt方法進行暴力中斷。發現效果達到,這個問題解決。

但是我們覺得這個方法不好,於是重新思考問題點。分析後,由於程序並沒有死掉。只是launcher重新進入了生命週期。所以我們直接把整個邏輯驗證執行緒改為全域性靜態的變數了。問題依然解決。

Android執行緒池中的任務取消

executorservice pool executors.newfixedthreadpool 2 建立實現了runnable介面物件,thread物件當然也實現了runnable介面 thread t1 new mythread thread t2 new mythread thread t3...

多執行緒在Android中應用

asynctask 如何使用?asynctask原理及不足 asynctask不足 asynctask記憶體洩漏問題 如何取消asynctask?sp是程序同步的嗎?有什麼方法做到同步?多程序是支援的但是大量同時讀寫操作也會存在問題,談談多執行緒在android中的使用 如何防止執行緒的記憶體洩漏?...

關於android 執行緒的銷毀問題

最近在做乙個android上的遊戲,用到了多個執行緒,當一切準備基本完成時出現了乙個小問題,選擇退出時finish掉了乙個activity但是裡面的執行緒卻沒辦法結束掉,因此就算退出了遊戲等到執行緒結束時該執行的頁面還是會跳出乙個activity,原來finish乙個activity並不能結束掉乙個...