Android合理使用AsyncTask和Thread
2013-11-22 11:16
211 查看
AsyncTask大概是Android开发人员最常用的线程类了, 使用方便, 可以更新UI. 但是过度使用、不合理的使用会出现"创建的AsyncTask不会执行的情况", 调试的时候会发现AsyncTask已经创建, 但是不会执行 #doInBackground 方法.
为什么?
因为AsyncTask存在一个线程池的机制, 大概容量是128, 同时运行的只能是5个, 剩下的需要排队等候.
所以如果在开发中过度的使用耗时太久的AsyncTask, 就会出现有的AsyncTask不会立即执行的情况.
这时候, 并不是所有的耗时任务都使用AsyncTask, 如果不需要更新UI, 可以使用Thread(示例代码如下). 或者使用Thread + Handler 更新UI.
另外, 直接使用 new Runnable()是不行的, 因为Runnable运行在UI线程里, 还是会造成UI线程阻塞.
为什么?
因为AsyncTask存在一个线程池的机制, 大概容量是128, 同时运行的只能是5个, 剩下的需要排队等候.
所以如果在开发中过度的使用耗时太久的AsyncTask, 就会出现有的AsyncTask不会立即执行的情况.
这时候, 并不是所有的耗时任务都使用AsyncTask, 如果不需要更新UI, 可以使用Thread(示例代码如下). 或者使用Thread + Handler 更新UI.
new Thread(new Runnable() { @Override public void run() { } }).start();
另外, 直接使用 new Runnable()是不行的, 因为Runnable运行在UI线程里, 还是会造成UI线程阻塞.
相关文章推荐
- Android4.4-KitKat源码下载
- android应用资源基础
- Android中使用SharedPreferences进行数据存储及文件操作
- Android开发之AsyncTask的使用
- Android NDK 使用skia
- Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果
- Android之 BatteryService
- android binder理解
- android binder理解
- Android adb 常用技巧
- android audio 音量调节
- Android 开发之旅:view的几种布局方式及实践
- Android中打开扬声器关闭麦克风的代码实现
- Android打开其它应用程序
- android_ndk
- android 实现静默安装、卸载
- android方向键被锁定的问题
- Android 判断SD卡是否存在及容量查询
- android.os.NetworkOnMainThreadException
- Android应用程序获取root权限