/** handler更新数据标志 */ protected static final int MSG_UPDATE_DATA = 2; protected static final int MSG_INSERT_DB = 0;
public void downloadData() { updateUIThread( MSG_UPDATE_DATA ); mListView.refreshSelf(); }
public void updateUIThread( final int type ) { new Thread( new Runnable() { @Override public void run() { mUIhandler.sendEmptyMessage( type ); } } ).start(); }
/** 刷新UI handler */ private Handler mUIhandler = new Handler() { public void handleMessage( android.os.Message msg ) { switch ( msg.what ) { case MSG_UPDATE_DATA: updateListView( ( List<TaskReceiveRspJson> ) TaskDbManager .getData( TaskDbManager.TABLE_TASK_RECEIVE, mQueryByState ) ); break; default: break; } }; };
handler 处理方法
消息处理代码: private Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case 1 : bt.setText("正在下载..."); break; case 2 : Bitmap bm = (Bitmap) msg.obj; iv.setImageBitmap(bm); break; case 3 : Bundle bundle = msg.getData(); String data = bundle.getString("text"); bt.setText(data); break; } } }; 消息发送代码: 方式一: 示例1: Message.obtain(handler,1).sendToTarget(); 示例2: Bitmap bm = NetUtil.downloadNewImg(); Message.obtain(handler, 2, bm).sendToTarget(); 示例3: // 这条消息,不携带数据,而是携带一段代码, 主线程处理这条消息时,会执行它携带的代码,而不执行其他代码 Message.obtain(handler, new Runnable() { public void run() { bt.setText("下载内涵图"); } }).sendToTarget(); 方式二: 示例1: handler.obtainMessage(1).sendToTarget(); 示例2: Bitmap bm = NetUtil.downloadNewImg(); handler.obtainMessage(2, bm).sendToTarget(); 方式三: 示例1: Message msg = new Message(); msg.what =1; handler.sendMessage(msg); 示例2: Message msg = new Message(); msg.what =2; msg.obj = bm; handler.sendMessage(msg); 示例3: Message msg = new Message(); Bundle data = new Bundle(); data.putString("text", "正在下载..."); msg.what = 3; msg.setData(data); handler.sendMessage(msg); 示例4: // 创建一个携带代码的消息对象,并发送给主线程执行 handler.post(new Runnable() { public void run() { // 在主线程中,处理消息时执行 Toast.makeText( MainActivity.this, "下载结束", Toast.LENGTH_SHORT).show(); } });
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
本文将深入探讨Android多线程中的数据传递以及如何通过Handle实现UI更新。 首先,我们了解下Android线程的基本概念。Android应用主要运行在主线程,也称为UI线程,负责处理用户交互和更新UI。由于主线程不允许执行...
在Android应用开发中,UI(用户界面)的更新必须在主线程中进行,因为这是Android系统规定的,以保证用户界面的流畅性。然而,当执行耗时操作如网络请求、数据库操作等时,如果在主线程中进行,将导致应用程序无响应...
首先,我们需要理解Android的主线程,也被称为UI线程,它是负责处理用户交互和更新界面的线程。当需要在后台执行耗时任务时,我们通常会创建新的工作线程。然而,这些工作线程不能直接修改UI,因为这可能会导致线程...
"Android handle传值Demo"就是这样一个实例,它展示了如何使用Handler和Bundle来实现在后台线程与主线程之间的数据传递。 首先,让我们了解下Handle(处理者)的概念。在Android中,主线程(UI线程)负责处理用户...
本示例“android demo,实现主线程handle,工作子线程threadHandle的处理”专注于如何在主线程和子线程之间有效地进行通信。下面将详细讲解这个知识点。 1. 主线程(UI线程): 在Android中,主线程负责处理用户...
在Android开发中,UI设计是一项至关重要的工作,它直接影响着应用的用户体验。良好的UI设计不仅能够提升产品的美观性,还能够改善用户的操作体验,使得应用界面更加直观和易用。以下将详细介绍Android中UI设计的一些...
在Android应用开发中,线程(Thread)和Handler是两个至关重要的概念,它们共同负责处理应用程序的多任务执行和UI更新。本资料“Android-Handle-Thread.rar”着重讲解了如何在Android环境中有效地管理和同步线程,...
在Android开发中,`主线程`(也称为UI线程)是应用程序的入口点,负责处理用户交互和更新用户界面。`Handle` 和 `Runnable` 是Android多线程编程中的重要概念,它们允许开发者在不同的线程之间同步数据和执行任务。`...
本文主要探讨了Android的进程和线程模型,以及如何在多线程环境下有效地更新UI。 首先,我们来看Android的进程机制。Android应用在启动时会创建一个LINUX进程和一个主线程,所有组件都在这个进程中运行。Android对...
在 Android 开发中,Handle 是一个关键的组件,它主要用于在不同的线程之间进行通信,特别是在 UI 线程和后台线程之间。Handle 的主要作用是解决 Android 应用程序中的多线程问题,确保耗时的操作不会阻塞主线程,...
Android UI 设计技巧 Android UI 设计技巧是 Android 开发中的一个重要方面,它直接影响到用户体验。本文将分享 Android 中 UI 设计的一些技巧,包括按钮的 UI 设计和 ListView 以及 GridView 的 UI 设计。 按钮的...
开发者可以通过创建`Handler`实例、定义`Runnable`并使用`post()`或`postDelayed()`来安排UI更新,或者直接在子线程中调用`postInvalidate()`来触发视图的重绘。在实际项目中,这种异步更新UI的方法非常常见,也是...
在Android应用开发中,UI设计是至关重要的一个环节,它直接影响到用户体验。今天我们要讨论的是一个经典的Android UI组件——SlidingDrawer,它提供了一种抽屉式的交互效果,常用于隐藏和显示额外的信息或者功能区域...
本文将深入探讨 Android 线程的管理以及如何在多线程环境中更新 UI。 首先,让我们了解 Android 的进程模型。Android 系统为每个应用程序分配一个独立的 Linux 进程和主线程。进程的重要性分为五个等级:前台进程、...
总结总结 Android的消息机制Handler是线程间通信的关键工具,它允许开发者在后台线程执行耗时操作,而将UI更新交由主线程处理,保证了UI操作的安全性和性能。理解Handler、Looper和MessageQueue的工作原理以及它们...
在Android开发中,Handle类是实现线程间通信和异步处理的核心工具。它与Looper、Message紧密配合,使得在主线程(UI线程)和工作线程之间能有效地传递消息,进而解决长时间运行任务导致的UI卡顿问题。下面我们将深入...
- **Post模式**:使用`Handler.post(Runnable)`,Runnable将在主线程的Looper中执行,适合用于轻量级的UI更新。 - **Message模式**:使用`Handler.sendMessage(Message)`,Message中可以携带数据,适合于复杂的...
// 更新UI break; default: super.handleMessage(msg); } } ``` #### 四、总结 通过以上分析,我们可以看出Android中Handler机制的核心在于利用Looper、MessageQueue和Handler三个核心组件,实现了线程间的...
`handle_message_obtainMessage`这个主题涉及到的是Android中的Handler机制,它允许开发者在不同线程之间传递消息,并在特定线程(通常是UI线程)中执行回调。下面我们将深入探讨这个知识点。 首先,`Handler`是...
在Android UI开发中,SlidingDrawer是一个非常实用的组件,它允许开发者实现类似抽屉的交互效果,常见于导航栏或者设置菜单等场景。自SDK 1.5版本开始引入,SlidingDrawer提供了水平和垂直两种展开方式,使得用户...