package com.saul;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
/**
* 通过looper+handler方式在子线程中刷新UI
* @author Saul
*
*/
public class UpdateTitle extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ModifyTitle modifyTitle=new ModifyTitle();
modifyTitle.start();
}
class ModifyTitle extends Thread{
TitleEventHandler handler;
public void run(){
Looper mainLooper=Looper.getMainLooper();
handler=new TitleEventHandler(mainLooper);
handler.removeMessages(0);
Message msg=null;
Long currentSecond;
Long previousSecond = 0l;
int time = 5;
while (true) {
currentSecond = (System.currentTimeMillis() / 1000) % 10;
if (currentSecond != previousSecond) {
time--;
if (time < 0) {
break;
}
msg=handler.obtainMessage(1, 1, 1,"当前还剩" + (time + 1) + "秒");
handler.sendMessage(msg);
previousSecond = currentSecond;
}
}
}
}
class TitleEventHandler extends Handler{
public TitleEventHandler() {
super();
}
public TitleEventHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
setTitle((String)msg.obj);
}
}
}
分享到:
相关推荐
`Looper`是Android系统中的消息队列管理器,它在主线程中默认已经启动了消息循环,而在子线程中需要手动调用`Looper.prepare()`和`Looper.loop()`来启动。 具体步骤如下: 1. **创建Handler实例**:在UI线程中创建...
在 Android 应用开发中,为了保证界面的流畅性,我们通常需要将耗时操作放在非 UI 线程中执行,然后通过某种机制将结果传递回 UI 线程进行界面更新。这就是 Android 的异步处理机制,其中 Handler、Looper 和 ...
如果我们需要在子线程中操作 UI,那么我们需要使用 Handler 来将消息发送到 UI 线程中,然后在 UI 线程中处理消息。 在多线程编程中,我们需要注意线程的同步问题。我们可以使用锁机制来实现线程的同步。例如,我们...
此外,Android还提供了HandlerThread类,它是一个拥有自己Looper的线程,简化了在子线程中使用Looper和Handler的过程。 总结来说,Looper和Handler是Android系统中实现UI线程和子线程通信的重要工具。它们通过消息...
Handler、Looper和MessageQueue是Android异步处理机制中的核心组件,它们共同构建了一个消息传递系统,使得在不同线程间进行数据交换变得可能。下面我们将深入探讨这三个组件的工作原理及其在实际开发中的应用。 ...
在主线程(UI线程)中创建一个Handler实例后,我们可以在这个Handler中发送Message到Message Queue,然后由Looper取出并分发给相应的Handler进行处理。这样,即使Message是在其他线程中生成的,它们也能在正确的线程...
总结来说,`android 更新 UI 线程 handler`这个知识点主要涉及如何在Android中安全地更新UI。通过Handler和Runnable的配合,我们可以确保在主线程中执行UI更新操作,从而避免阻塞用户界面,提高应用的响应速度和用户...
在子线程中,我们需要调用`Looper.prepare()`来初始化Looper,然后通过`Looper.loop()`开启消息循环。 在源码层面,当我们调用Handler的`sendMessage()`时,消息会被放入Looper的消息队列。在主线程的Looper中,会...
在Android中,可以使用多种方式实现多线程,如AsyncTask、Handler+Looper、IntentService、Thread、ExecutorService等。这里我们重点讨论使用ExecutorService,因为它更加灵活且易于管理线程池。 1. 创建...
* 子线程中更新UI:在Android中,UI操作只能在主线程中进行,为了解决这个问题,Android提供了Handler机制,允许我们在子线程中更新UI。 * Android布局文件:Android布局文件是Android开发中的一部分,用于定义用户...
AsyncTask内部就使用了Handler、Thread和Looper的概念,它会在一个工作线程中执行任务,然后通过回调方法在主线程中更新UI。 总的来说,理解和熟练运用Handler、Thread和Looper对于Android开发者至关重要,因为它们...
由于Android系统的安全机制,直接在子线程中修改UI是不允许的,因此我们需要通过特定的方式来实现子线程与UI线程之间的通信,以便在子线程完成任务后,能够安全地更新UI。`AndroidUIUpDemo`这个项目应该是一个展示...
3. Handler:Handler是Android中进行线程间通信的关键组件,它与Looper和MessageQueue紧密关联。Handler可以发送Message到MessageQueue,同时也可以处理由Looper传递过来的消息。这样,即使任务在子线程中创建,也...
在Android系统中,消息处理机制是至关重要的,它允许开发者在不同的线程间进行通信,尤其是主线程(UI线程)与其他工作线程之间。这一机制主要涉及到两个关键组件:`Looper`和`Handler`。下面我们将深入探讨这两个...
在主线程即UI线程外,新建一个Looper线程,并用Messenger和Handler来处理message和posted runnable。程序中,在负线程中默认加了一个3s的线程等来,来帮助理解sent message和post runnable之间的同步机制。所以在按...
在Android中,每个线程都有一个Looper,但默认情况下,只有主线程(UI线程)的Looper是激活的。若要在其他线程中使用消息机制,需要手动调用Looper.prepare()和Looper.loop()来初始化和启动消息循环。 Handler则是...
在Android应用开发中,Handler、Looper和Message是实现线程间通信的重要机制,尤其是在主线程与工作线程之间同步数据和执行UI更新时。Handler、Looper和Message三者结合使用,构建了一个消息处理系统,使得非UI线程...
- 如果需要在子线程中更新UI,可以通过`Handler`发送消息到主线程。 - 使用`Handler`时要注意内存泄漏问题,特别是当`Activity`或者`Fragment`被销毁时,记得取消正在处理的消息或者移除`Handler`引用,防止`Handler...
通过继承HandlerThread并在其内部创建Handler,可以在子线程中实现消息处理,而不会阻塞主线程。当工作完成后,可以通过调用`quit()`或`quitSafely()`方法来停止Looper,从而结束HandlerThread。 理解了这三个组件...
`Handler`、`Message`和`Looper`是Android系统提供的一个关键机制,用于在不同的线程间进行通信,特别是主线程(UI线程)与工作线程间的交互。下面将详细解释这三个组件以及它们如何协同工作。 1. **Handler...