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);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
handerHandler.sendEmptyMessage(0);//这里发送了一个空的消息0到MessageQueue,也可以用下面2种的方法。
// Message msg = new Message();
// msg.what=0;
// handerHandler.sendMessage(msg);
//这用方法比上面那种Message的获取方法节省内部空间
// Message msg=handerHandler.obtainMessage();
// msg.arg1=0;
// handerHandler.sendMessage(msg);
}
分享到:
相关推荐
3. **自定义Handler**:创建一个继承自Handler的类,重写`handleMessage(Message msg)`方法来处理接收到的消息。 4. **Looper的使用**:在主线程中设置Looper,使Handler能接收到消息。 5. **线程管理**:创建工作...
`Handler`实例通过重写`handleMessage()`方法来处理从消息队列中取出的消息。 #### 结论 安卓的消息队列机制通过`MessageQueue`、`Looper`和`Handler`三个关键类构建了一套灵活高效的异步通信框架。开发者可以利用...
- 创建Handler时,需要重写`handleMessage(Message msg)`方法,该方法会在接收消息的线程中被调用。 - 通过`sendMessage(Message msg)`或`sendMessageDelayed(Message msg, long delayMillis)`将消息放入消息队列...
3. 使用Handler实例发送消息或Runnable对象到消息队列。可以使用`sendMessage()`或`post()`方法,其中`msg`参数通常包含了要传递的数据。 4. 调用`Looper.loop()`开始消息循环。这个循环会不断检查消息队列,一旦有...
创建Handler时通常需要重写`handleMessage(Message msg)`方法,这是处理消息的核心代码: ```java Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // 处理接收到的消息...
Handler可以重写handleMessage()方法,定义处理Message时的具体行为。 2. **创建Message**:在非主线程中,创建Message对象,并设置其what、arg1、arg2等属性,或者使用Bundle添加额外的数据。 3. **发送Message**:...
Handler的`handleMessage(Message msg)`方法是处理消息的地方,开发者可以重写此方法来执行特定的操作。 `Looper`类是每个线程中的消息循环,负责从消息队列中取出Message并分发给对应的Handler。在Android系统中,...
3. 处理消息:Looper从消息队列中取出Message,交给对应的Handler的`handleMessage()`方法进行处理。 消息处理的顺序主要取决于两个因素:Message的发送时间和Message的优先级。在Android中,Message对象有一个`...
1. 创建Handler子类:继承自Handler并重写handleMessage()方法。这个方法会在主线程中被调用,用于处理接收到的消息。 2. 实现handleMessage():在这里编写更新UI或其他业务逻辑的代码。 3. 在其他线程中发送消息:...
使用Handler的`sendEmptyMessage()`、`sendMessage()`或`post()`方法向消息队列中发送消息。这些方法会创建一个Message对象,并将其放入队列。例如: ```java Message msg = new Message(); msg.what = 1; // ...
3. 在Handler中重写handleMessage方法,处理发送过来的消息。 ```csharp public class MyHandler : Handler { public override void handleMessage(Message msg) { switch (msg.what) { case 1: string data = ...
一旦消息进入队列,`Looper`就会将其取出并交给`Handler`处理,从而触发对应的消息回调函数`handleMessage()`。 以下是一个简单的`Handler`使用示例: ```java public class MainActivity extends ...
单纯使用Handler的post方法不会开启新的线程,而是将Runnable添加到当前线程的消息队列,因此并非实现多线程的最佳实践。 5. **补充:Looper与MessageQueue**: Looper是消息循环器,它会不断从MessageQueue中取出...
通常,我们通过创建Handler的子类并重写`handleMessage(Message msg)`方法来处理接收到的消息。Handler对象通常与主线程(UI线程)关联,因此它可以安全地更新UI。 接下来,我们要提到的是Looper。Looper是消息队列...
创建Handler通常需要重写`handleMessage(Message msg)`方法,这里会定义处理消息的逻辑。有两种创建方式: - 直接构造Handler,关联到当前线程的Looper。 - 通过`Looper.prepare()`和`Looper.loop()`创建一个新的...
- **创建Handler**:通过继承Handler类并重写`handleMessage(Message msg)`方法来定义消息处理逻辑。 - **发送消息**:通过调用Handler的`sendMessage(Message msg)`或`post(Runnable r)`等方法向消息队列发送消息...
- **创建Handler对象**:首先在需要处理消息的线程(通常是主线程)中创建一个Handler实例,重写handleMessage()方法,这个方法会在接收到消息后被调用,用于执行相应的操作。 ```java class MyActivity extends ...
- **MessageQueue**:存放所有通过Handler发送的消息的队列。消息在此等待被处理。 - **Looper**:每个线程中的MessageQueue的管理者。调用`Looper.loop()`方法后,会进入一个无限循环,不断从MessageQueue中取出待...
每个Handler实例都与一个特定的线程及其消息队列关联。 - **发送消息**:可以通过调用Handler的`sendMessage()`方法向其关联的MessageQueue发送消息。 - **处理消息**:当消息从MessageQueue中取出后,Handler会...