码迷,mamicode.com
首页 > 移动开发 > 详细

Android 开发中踩过的坑之四:低版本使用AsyncTask

时间:2015-08-04 16:05:00      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

这个坑比较隐晦, 一般不容易出现.


有可能在使用AsyncTask时, 明明就是在postResult()方法里设置UI, 却被告知不能在非UI线程设置UI的异常.

这实际上应用App启动时的一个bug. AsyncTask是在初始化的时候, 自己取当前的线程获取Looper. 但是问题来了, 

当前线程可能并不是UI线程, 所以就导致了postResult()等原本应该在UI线程工作方法, 实际上在非UI线程.

谷歌在4.1以后版本里解决这个bug, 就是在应用启动时, 在UI线程里先调用了一次AsyncTask.init(). 这样在当前应用里, AsyncTask的Looper就是UI线程的Looper了. 

但是在4.1以前的版本里, 使用AsyncTask前, 自行在UI线程里调用一下AsyncTask.init()吧

Android 开发中踩过的坑之四:低版本使用AsyncTask

标签:

原文地址:http://my.oschina.net/u/1393188/blog/487525

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!