`
malong26
  • 浏览: 168699 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android的AsyncTask类中使用自定义handler

阅读更多
熟知的AsyncTask就是Thread+handler实现,但是这个handler并不能很好的被我们控制。在我的需求中希望在AsyncTask中使用自定义的handler,而且在必要的时候退出消息循环。实现思路如下:
    AsyncTask中创建消息循环,然后启动handler目标操作,当操作结束后,结束消息循环,执行后续代码。
下面是代码:
class mAsyncTask extends AsyncTask {
    @Override
    protected Object doInBackground(Object... params) {
	// TODO Auto-generated method stub
         
         Looper.prepare();	
         MHandler mHandler = new MHandler();
         ...
         //my action
         if(action is over){
             mHandler.getLooper.quit();//当动作结束,退出消息循环,执行下面方法,如果不退出,下面的方法function()不会执行
         }
         ...
         Looper.mLooper.loop();
         function();
         return null;
  }
}
分享到:
评论

相关推荐

    AsyncTask 与Thread加Handler处理消息比较

    总的来说,`AsyncTask`和`Thread+Handler`都是Android中实现异步操作的重要手段,它们各有优缺点,开发者应根据实际项目需求来选择合适的方法。在实践中,理解并熟练掌握这两种方法对于提升Android应用的性能和用户...

    android Handler Thread AsyncTask httpURLConnection

    开发者可能会使用`HttpURLConnection`来获取图片的HTTP响应,然后在后台线程(可能是`Thread`、`AsyncTask`或自定义的`ExecutorService`)中解码图片,最后通过`Handler`将解码后的图片发送回主线程进行显示。...

    android 中Handler 的几种写法

    通过理解以上知识点,开发者可以灵活地在Android应用中使用`Handler`进行线程间通信,高效地处理异步任务和UI更新。在实际开发中,结合`Handler`、`Looper`、`Thread`以及`Runnable`,可以构建出复杂而稳定的多线程...

    android asyncTask

    在提供的`dialogTest`压缩包文件中,可能包含了一个关于如何在`AsyncTask`中使用对话框进行进度显示的示例。这通常涉及到在`onPreExecute()`中创建并显示对话框,在`onProgressUpdate()`中更新对话框的进度,在`...

    详解Android中用于线程处理的AsyncTask类的用法及

    总的来说,AsyncTask 是 Android 应用中处理异步任务的一个强大工具,它简化了线程管理,提高了用户体验。然而,由于其执行策略的变化以及对 Android 版本的依赖,使用时需要注意兼容性问题,并谨慎处理多线程环境下...

    androidHandler测试的demo

    首先,`Handler`是Android中的一个关键类,它允许我们在一个线程中发送和处理另一个线程的消息。`Handler`创建时会关联到一个`Looper`,默认是主线程的`Looper`。通过`post(Runnable r)`或`sendMessage(Message msg)...

    Android AsyncTask详解及使用方法

    如果是在不同的类都需要调用的话,那么要把自定义的AsyncTask写在一个新类里面,并且需要在定义的AsyncTask中写一个完成的回调。 二、使用AsyncTask 使用AsyncTask的步骤如下: 1. 创建AsyncTask的实例:`...

    Android 百度定位 多个自定义绘制View

    - 可以使用AsyncTask、Handler或新的Android架构组件如LiveData和ViewModel来管理异步任务。 通过这个项目,开发者不仅可以了解如何使用百度地图API进行定位,还能掌握自定义View的设计技巧,以及如何将两者结合...

    Android高级应用源码-自定义列表选择Dialog,适用网络请求数据.zip

    在Android开发中,自定义对话框(Dialog)是一种常见的用户交互方式,特别是在处理用户需要做出选择的情景。这个“Android高级应用源码-自定义列表选择Dialog,适用网络请求数据.zip”文件提供了一个实例,展示了...

    简介Android 中的AsyncTask

    AsyncTask在Android中是一个用于简化异步操作的工具,它主要设计用于在后台线程处理耗时任务,然后在UI线程更新结果。这个API在Android API 3(1.5 Cupcake)版本中被引入,以替代早期的UserTask。尽管在某些情况下...

    Android源代码:HandlerDemo

    7. **关闭Looper**:如果在自定义线程中使用了`Looper.prepare()`和`Looper.loop()`,记得在不再需要消息循环时调用`Looper.quit()`,防止内存泄漏。 理解并熟练运用`Handler`机制对于开发高效、稳定的Android应用...

    Android-详细解读AsyncTask的黑暗面以及一种替代方案

    在Android开发中,AsyncTask是一种常用的轻量级异步任务处理框架,它使得开发者可以在UI线程之外执行耗时操作,以避免应用因为阻塞主线程而引发的ANR(Application Not Responding)错误。然而,尽管AsyncTask简单...

    Android自定义相册实现

    在Android中,可以使用`LruCache`类来实现这一策略,用于存储解码后的Bitmap,有效减少重复加载和内存消耗。 2. **图片加载库**: - **自定义加载器**:在本项目中,可能涉及创建自定义图片加载库,以满足特定的...

    模范Android中的AsyncTask

    在Android开发中,`...通过深入理解和正确使用`AsyncTask`,开发者可以在Android应用中创建流畅的用户体验,同时避免性能问题和UI冻结。了解如何与`Looper`和`Handler`协同工作,有助于进一步优化异步任务的执行。

    Android 自定义图片加载进度条

    总结来说,实现"Android 自定义图片加载进度条"需要掌握自定义View的绘制、图片加载库的使用、监听器机制以及UI线程和异步操作的协调。通过以上步骤,我们可以创建出一个既实用又美观的图片加载进度条,提升用户在...

    Android和Handler那些事

    如果要在自定义线程中使用`Handler`,则需要手动调用`Looper.prepare()`和`Looper.loop()`来启动消息循环。 `Message`则是`Handler`传递的数据载体,包含了要传递的信息和处理该消息的目标`Handler`。`Message`对象...

    9Handler&AsyncTask实验报告

    实验报告“9Handler&...总结来说,该实验报告旨在通过实际操作让开发者了解和掌握Handler和AsyncTask在Android开发中的应用,提升处理后台任务和更新UI的能力,这对于任何Android开发者来说都是至关重要的技能。

    android线程 Handler Message Queue AsyncTask线程模型 线程交互 + 修改Button样式 示例 最终easy整合版

    可以在XML布局文件中使用style属性引用预定义的样式,或者在styles.xml中创建自定义样式。可以设置按钮的颜色、文字颜色、大小、背景等属性。例如: ```xml <item name="android:textColor">@color/button_text_...

    Android 自定义progressDialog实现

    现在,我们可以在应用中使用自定义的`CustomProgressDialog`了。例如: ```java CustomProgressDialog dialog = new CustomProgressDialog(this); dialog.show(); // 在需要更新进度或文本的地方调用相应的方法 ...

Global site tag (gtag.js) - Google Analytics