最近寫了一個程式,功能會大量用到 Asynctask 和 GCM 去向網路取資料。
但是最近發生了一個狀況,就是在某些狀況下(可能是 Asynctask 沒把東西還沒取
完東西)如果碰到主程序 Crash 的時候,再開啟一次程式 Asynctask 的執行序會全部都
卡住。
低階機種 HTC Desire S(大樹)倒是不會有這種狀況,但是 LG G2、Sansumg Note3
卻得卡上一段時間才會跑執行序(大約一分鐘),而如果遇到 Sony 的機子(Z、ZR),則會
徹底卡死,除非去清除暫存和快取,還有強制終止程式才能解決。
碰到這樣的狀況如果我下 ActivityManager.killBackgroundProcess 能夠解決,本
來是想說用 UncaughtExceptionHandler 去攔截後下殺光所有背景服務的指令,只是好
像不是每一次都這麼順利(有的時候可以,有的時候不行)。
周遭的同仁對這個狀況多出了很有趣的假設,因為大樹的記憶體太少了,所以在程
式寫壞當掉的時候會把這些東西清掉,但是 G2 Note3 或是 ZR Z 那些,則是記憶體
比較大,會把這些卡住的執行序留著,反而讓一次限制五個執行的 AsynTask 卡住了。
我想問的是,有沒有人遇過太多異步任務卡住的問題?是如何解決呢?