最近写了一个程式,功能会大量用到 Asynctask 和 GCM 去向网络取资料。
但是最近发生了一个状况,就是在某些状况下(可能是 Asynctask 没把东西还没取
完东西)如果碰到主程序 Crash 的时候,再开启一次程式 Asynctask 的执行序会全部都
卡住。
低阶机种 HTC Desire S(大树)倒是不会有这种状况,但是 LG G2、Sansumg Note3
却得卡上一段时间才会跑执行序(大约一分钟),而如果遇到 Sony 的机子(Z、ZR),则会
彻底卡死,除非去清除暂存和快取,还有强制终止程式才能解决。
碰到这样的状况如果我下 ActivityManager.killBackgroundProcess 能够解决,本
来是想说用 UncaughtExceptionHandler 去拦截后下杀光所有背景服务的指令,只是好
像不是每一次都这么顺利(有的时候可以,有的时候不行)。
周遭的同仁对这个状况多出了很有趣的假设,因为大树的内存太少了,所以在程
式写坏当掉的时候会把这些东西清掉,但是 G2 Note3 或是 ZR Z 那些,则是内存
比较大,会把这些卡住的执行序留着,反而让一次限制五个执行的 AsynTask 卡住了。
我想问的是,有没有人遇过太多异步任务卡住的问题?是如何解决呢?