Android异步线程与Bundle消息传递
16lz
2021-01-25
package com.lzr;/////验证异步线程/////先修改AndroidManifest.xml来默认启动HanderTest2这个Activity////使用Looper来启动另一个线程实现handler////HandlerThread对象用法////Bundle对象用法import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.HandlerThread;import android.os.Looper;import android.os.Message;public class Handlertest2 extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.main);//打印当前线程的IDSystem.out.println("Activity--->"+Thread.currentThread().getId());///生成一个HandlerThread线程对象,实现使用Looper来处理消息队列的功能,这个类由Android提供HandlerThread handlerThread=new HandlerThread("handler_thread");////在使用HandlerThread的getLooper()方法前,必须先调用start()启动线程handlerThread.start(); ////MyHandler myHandler=new MyHandler(handlerThread.getLooper());Message msg=myHandler.obtainMessage(); ////生成Bundle对象Bundle b=new Bundle();b.putInt("age", 25);b.putString("name", "make");msg.setData(b);////将msg发送到目标对象,所谓目标对象,就是生成该对象的handler对象,如myHandlermsg.sendToTarget();///调用当生成的对象发送给handleMessage(Message msg)} class MyHandler extends Handler{ public MyHandler() {} ////使用looper来使Handler从另外一个线程中的消息队列中取得数据 public MyHandler(Looper looper) { super(looper); }@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stub///super.handleMessage(msg);Bundle b=msg.getData();int age=b.getInt("age");String name=b.getString("name");System.out.println("age is"+age+" name is"+name);System.out.println("handler--->"+Thread.currentThread().getId());System.out.println("handlerMessage");} } }
更多相关文章
- Android(安卓)常用技术框架的基本使用
- Android(安卓)Studio——Message
- Android(安卓)利用soap协议与服务端进行通信
- Android(安卓)Webkit简单用例
- 【Android(安卓)开发教程】使用Intent发送短信
- 8.Swift openURL
- Android(安卓)NDK c创建新的线程
- SharedPreferences存储数据的使用方法(转)
- Android之使用MediaMetadataRetriever类获取视频第一帧