AsyncTask的onPostExecute方法未被系统回调
来源:互联网 发布:剑灵捏脸数据导入图片 编辑:程序博客网 时间:2024/05/22 00:26
我们的TV客户端里增加了登录功能,在实现过程中,使用了AsyncTask来处理异步登录。在测试过程中,机率性的出现登录时,界面一直停在登录中的状态。
开始的时候以为是网络请求未设置请求的超时时间,但是设置了也不管用,依旧复现,让人非常头疼。
后来经过多次排查,发现是AsyncTask的onPostExecute()方法未被系统回调,是android Framework的一个bug。
查了好多资料,这个问题的出现跟AsyncTask初始化有关系,AsyncTask中有一个静态的Handler,如下代码:
开始的时候以为是网络请求未设置请求的超时时间,但是设置了也不管用,依旧复现,让人非常头疼。
后来经过多次排查,发现是AsyncTask的onPostExecute()方法未被系统回调,是android Framework的一个bug。
问题解决:
查了好多资料,这个问题的出现跟AsyncTask初始化有关系,AsyncTask中有一个静态的Handler,如下代码:
private static final InternalHandler sHandler = new InternalHandler();
AsyncTask的实例本来是应该在UI Thread中初始化,但是很多情况下,我们可能在某个非UI线程中无意中初始化了Handler的构造函数。
用砖家的话来说就是:你喝奶的姿势不对。
所以为了确保 AsyncTask在UI线程中初始化,可以在app的application的oncreate方法中,加入以下代码:
try { Class.forName("android.os.AsyncTask");} catch (Exception e) { e.printStackTrace();}
这个bug在目前最新的android版本中依然存在,不知道为神马……
参考资料:
http://stackoverflow.com/questions/4280330/onpostexecute-not-being-called-in-asynctask-handler-runtime-exception
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=205952
原文链接:http://www.67tgb.com/?p=619
转载注明:望月听涛
- AsyncTask的onPostExecute方法未被系统回调
- [转]AsyncTask的onPostExecute方法未被系统回调
- AsyncTask的onPostExecute方法没有被系统回调的解决方案
- Asynctask onPostExecute未执行的问题分析
- 【ANDROID】ASYNCTASK不回调ONPOSTEXECUTE方法的解决办法。
- AsyncTask onPostExecute 未执行原因
- AsyncTask onPostExecute 未执行问题
- Android AsyncTask的onpostexecute没有被调用
- android 的AsyncTask没有进入onPostExecute的解决办法
- AsyncTask doinbackground onProgressUpdate onCancelled onPostExecute的基本使用
- Activity中获取AsyncTask中onPostExecute的结果返回值
- 日常笔记-AsyncTask onPostExecute方法无法运行但不报错情况。
- onDetach ,onAttach,onPostExecute,RetianFragment方法周期,解释的不错
- AsyncTask onPostExecute()不执行,与JPush冲突
- AsyncTask中的OnPostExecute()没有正常运行
- 解决AsyncTask,doingBackground方法未及时执行
- AsyncTask中执行完doInBackground不执行onPostExecute
- Android AsyncTask onPostExecute()不执行,与JPush冲突
- hibernate的save和saveOrUpdate方法
- 包加载失败的解决办法
- 正确初始化二维数组
- 使用ownCloud搭建私人存储云(以Ubuntu12.04为例)
- 利用JavaScript SOAP Client直接调用webService --完整的前后台配置与调用示例
- AsyncTask的onPostExecute方法未被系统回调
- core java(五)treeMap的原理和使用(1)
- PhotoSwipe简介
- Chapter 2 笔记 链表
- UNIX网络编程--TIME_WAIT
- ActivityGroup改为Fragment
- iOS 翻翻看
- php 多进程中的信号问题
- 如何追女神?微软大数据告诉你