android 通过handler实现异步处理
16lz
2022-06-17
public class HandlethreadtestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); HandlerThread myhandlethread=new HandlerThread("my_handler1");// 1.创建一个handlerthread 线程对象 my_handler 是这个线程对象的名称 myhandlethread.start();//2. 启动线程 MyHandle myhandle=new MyHandle(myhandlethread.getLooper());//4.绑定到创建的线程上 Message msg=myhandle.obtainMessage();//5. 获取到msg对象 Bundle b=new Bundle(); b.putInt("age", 12); b.putString("name", "super_cj"); msg.setData(b);//在msg对象上绑定数据 msg.sendToTarget(); //把msg发送到绑定的线程上 } class MyHandle extends Handler //3. 创建一个handler的内部类 { public MyHandle() { } public MyHandle(Looper looper)//重载myhandle 让父类Handler 把myhandlerthread 加入到线程队列 { super(looper); }@Overridepublic void handleMessage(Message msg) {//在线程里要做的事 就是你想异步处理的代码// TODO Auto-generated method stubsuper.handleMessage(msg);Bundle bb=msg.getData();//获得msg 传过来的数据int age=bb.getInt("age");String name=bb.getString("name");Toast.makeText(HandlethreadtestActivity.this, String.valueOf(age), Toast.LENGTH_LONG).show();try{Thread.sleep(5000);//暂停线程5秒Toast.makeText(HandlethreadtestActivity.this, name, Toast.LENGTH_LONG).show();}catch(Exception e){}} }}
我也是初学 自己写下来忘记的时候来看看 呵呵 有错误的地方请帮忙指出 谢谢!
更多相关文章
- 看完这篇,再也不怕被问到AsyncTask的原理
- Android(安卓)AudioTrack实时播放
- Android对Window对象的管理机制分析
- android 模拟按键单值/多值输入
- Android中如何使用基于监听的事件处理(上)
- Android(安卓)Socket网络通信
- Android(安卓)中设计模式 ----原型模式
- Android(安卓)Drawable绘图
- Android(安卓)zip文件压缩解压缩