[问题] Asynctask 无法立即执行的问题(已解决)

楼主: jastpower884 (WIND)   2014-04-17 20:38:37
  最近写了一个程式,功能会大量用到 Asynctask 和 GCM 去向网络取资料。
  但是最近发生了一个状况,就是在某些状况下(可能是 Asynctask 没把东西还没取
完东西)如果碰到主程序 Crash 的时候,再开启一次程式 Asynctask 的执行序会全部都
卡住。
  低阶机种 HTC Desire S(大树)倒是不会有这种状况,但是 LG G2、Sansumg Note3
却得卡上一段时间才会跑执行序(大约一分钟),而如果遇到 Sony 的机子(Z、ZR),则会
彻底卡死,除非去清除暂存和快取,还有强制终止程式才能解决。
  碰到这样的状况如果我下 ActivityManager.killBackgroundProcess 能够解决,本
来是想说用 UncaughtExceptionHandler 去拦截后下杀光所有背景服务的指令,只是好
像不是每一次都这么顺利(有的时候可以,有的时候不行)。
  周遭的同仁对这个状况多出了很有趣的假设,因为大树的内存太少了,所以在程
式写坏当掉的时候会把这些东西清掉,但是 G2 Note3 或是 ZR Z 那些,则是内存
比较大,会把这些卡住的执行序留着,反而让一次限制五个执行的 AsynTask 卡住了。
  我想问的是,有没有人遇过太多异步任务卡住的问题?是如何解决呢?
作者: qweqweqweqwe (4qwe)   2014-04-17 21:26:00
但ap都crash了.. Asynctask 还会有影响?这么神奇QQ
作者: sdyy (中坜市的小智)   2014-04-17 21:56:00
用executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)强制异步 应该可以解决 不然一定会等前面做完才继续 前面卡了就动弹不得
作者: Deltaguita (伯利兹)   2014-04-17 21:58:00
我觉得你的Asynctask 里面的连线,要设定timeout你的问题我有遇过类似的,到后来我自己实作一个asynctask 先跟系统默认的Thread Poor分开来当时会造成这样的原因是因为 两个thread 互相等待当时会造成这样的原因是因为排队造成的
作者: tac0wu (在BBS中流浪)   2014-04-19 16:58:00
pool?
作者: qweqweqweqwe (4qwe)   2014-04-19 21:13:00
ㄎ 能简略分享一下吗 感觉这例子很有趣
作者: Deltaguita (伯利兹)   2014-04-22 12:21:00
要间容3.0以前的,会有点麻烦可以考虑直接使用一个3.0以后的asynctask(从源码抓)bitmap oom 我之前也是很常遇到阿~~~~ (爆后来有解决就是了,有兴趣可以再讨论

Links booklink

Contact Us: admin [ a t ] ucptt.com