这里Handler线程队列和ui主线程公用一共。Handler并没有真正的启动一个线程,而是直接调用run方法。
public class Test extends Activity implements OnClickListener {
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
handerHandler.removeMessages(0);
}
private TextView textView1;
public static int add;
private Handler handerHandler = new Handler() {
/*
* (non-Javadoc)
* @see android.os.Handler#handleMessage(android.os.Message)
*/
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
// textView1.setText("add");
textView1.setText(""+add+"");
++add;
removeMessages(0);
sendEmptyMessageDelayed(0, 5000);
Log.e("I AM HANDLER", "I AM TEST>>>>>>>>>>>>>>>>>>>>>>>O");
break;
case 1:
break;
case 3:
break;
case 4:
break;
}
super.handleMessage(msg);
}
};
Runnable testRunnable = new Runnable() {
public void run() {
// 在这个线程里我们发送一个消息给消息队列,发完之后继续执行下面的代码,
// 至于发送的消息的处理由handleMessage处理。这是异步的两个线程,实现了两个线程间的通信
handerHandler.sendEmptyMessage(0);
Log.e("这是一个线程", "》》》》》》》》》》》》》》》》》》》》》》这个线程要打印run");
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
handerHandler.post(testRunnable);
// Message msg = new Message();
// msg.what=0;
// handerHandler.sendMessage(msg);
//这用方法比上面那种Message的获取方法节省内部空间
// Message msg=handerHandler.obtainMessage();
// msg.arg1=0;
// handerHandler.sendMessage(msg);
}
分享到:
相关推荐
为了解决这个问题,Android提供了多种异步处理机制,其中一种常见的方式是使用`Thread`配合`Handler`来实现非UI线程执行耗时任务并更新UI。本篇将详细介绍这一方法。 首先,我们需要理解Android的线程模型。Android...
这个"Android_Handler的线程队列Demo"旨在演示如何有效地利用Handler来处理线程间的通信,特别是主线程(UI线程)与工作线程之间的交互。下面我们将深入探讨相关知识点。 首先,了解Handler的基本概念。Handler是...
在Android开发中,更新UI(用户界面)是一个常见的任务,但是由于Android的主线程(也称为UI线程)是负责处理用户交互和绘制界面的,所以直接在后台线程进行UI更新可能会导致程序崩溃或者界面卡顿。为了解决这个问题...
而在Android中,通常会使用Handler, MessageQueue和Looper的组合来实现UI线程与工作线程之间的通信。 具体步骤如下: 1. **创建后台线程**:首先,我们需要创建一个无界面的UI线程,它会在后台运行,执行计算或其他...
由于Android系统规定所有的UI操作必须在主线程(也称为UI线程)中执行,因此当需要在后台子线程进行耗时操作(如网络请求、数据库操作等)时,就需要一种机制来实现与UI线程的通信,以便更新UI。Looper和Handler正是...
在软件开发中,尤其是涉及到图形用户界面(GUI)的应用程序,理解和正确使用工作线程(Worker Thread)与UI线程(User Interface Thread)是至关重要的。工作线程和UI线程各自扮演着不同的角色,它们之间的协作确保...
Handler 可以在子线程中创建,但它的实例通常与主线程关联,因为它需要在主线程中执行任务,以便安全地更新 UI。子线程通过调用 `sendMessage()` 或 `post()` 方法将 `Message` 对象或 `Runnable` 对象发送到 ...
在Android系统中,UI线程(也称为主线程)是应用程序与用户交互的主要通道,它负责处理所有的用户界面更新和事件响应。理解Android的UI线程机制至关重要,因为错误地在非UI线程中操作UI组件会导致应用崩溃或出现不...
### Handler线程在Android中的应用及心得 #### 一、Handler机制概述 Handler机制是Android系统中用于处理消息和线程通信的重要组成部分。它主要由四个核心组件组成:`Looper`、`Handler`、`MessageQueue` 和 `...
在Android开发中,由于UI操作必须在主线程(也称为UI线程)中进行,因此在后台线程处理任务并更新界面时需要遵循特定的机制。以下是对标题和描述中涉及知识点的详细解释: 1. **线程模型**: Android系统采用单...
如果我们需要在子线程中操作 UI,那么我们需要使用 Handler 来将消息发送到 UI 线程中,然后在 UI 线程中处理消息。 在多线程编程中,我们需要注意线程的同步问题。我们可以使用锁机制来实现线程的同步。例如,我们...
主线程,也被称为UI线程,负责处理所有的用户交互,如触摸事件和UI更新。为了在不影响主线程的情况下执行耗时的操作,我们通常会创建子线程。在这个场景中,我们将在线程中处理图片的移动逻辑。 1. **创建线程**: ...
总之,Android应用开发中,正确处理子线程与UI线程的交互是非常重要的。通过理解和运用消息队列机制,我们可以确保应用的响应性和稳定性,同时避免潜在的性能问题。学习并熟练掌握Handler、Looper和Message的使用,...
Handler是Android中实现UI线程与后台线程交互的一个关键组件。它运行在主线程中,用于接收和处理来自其他线程的消息。子线程可以通过创建Message对象并将数据放入其中,然后通过Handler的`post()`或`sendMessage()`...
4. **Handler/Looper**:创建一个Handler对象,与主线程的Looper关联,通过Handler发送消息或Runnable对象到消息队列,Looper会按照顺序在主线程中执行这些任务。 5. **IntentService**:单线程服务,自动管理生命...
总结来说,Handler机制是Android多线程编程的关键工具之一,它使得开发者能够方便地在线程间传递信息,实现异步处理,确保UI线程不被阻塞,提升用户体验。熟练掌握Handler的使用,对任何Android开发者都至关重要。
2. 当需要在后台线程执行任务时,可以创建一个Runnable对象,并使用Handler的`post()`方法将其添加到线程队列: ```java Runnable updateThread = new Runnable() { @Override public void run() { // 执行耗时...
在Android开发中,`Handler`是一个至关重要的组件,主要用于解决线程间的通信问题,尤其是在UI线程和其他工作线程之间。本篇文章将深入探讨`Handler`的使用方法,包括其基本概念、工作原理以及如何避免内存泄露和...
在Android应用启动时,主线程(也称为UI线程)会默认创建一个`Looper`对象,该`Looper`会不断循环地从`MessageQueue`中取出消息并分发给相应的`Handler`进行处理。 1. 创建Handler 首先,你需要创建一个`Handler`...
Android应用的主要执行线程被称为“主线程”或“UI线程”,它负责处理用户交互和更新UI。然而,长时间运行的任务(如网络请求或数据库操作)不应在主线程中执行,因为这可能导致应用无响应。为了解决这个问题,...