Thread,Looper的组合是非常常见的组合方式。Looper可以是和线程绑定的,或者是main looper的一个引用。下面看看具体app层的使用。首先定义thread:package com.joyfulmath.androidstudy.thread;import co ...
Thread,Looper的组合是非常常见的组合方式。
Looper可以是和线程绑定的,或者是main looper的一个引用。
下面看看具体app层的使用。
首先定义thread:
package com.joyfulmath.androidstudy.thread;import com.joyfulmath.androidstudy.TraceLog;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;public class MyLoopThread extends Thread { private Looper myLooper = null; private MyHandler mHandler = null; public MyLoopThread() { super(); } @Override public void run() { TraceLog.i("MyLoopThread looper prepare"); Looper.prepare();// myLooper = Looper.getMainLooper(); /*using this can be set as main handler*/ myLooper = Looper.myLooper(); mHandler = new MyHandler(myLooper); TraceLog.i("MyLoopThread looper loop"); Looper.loop(); } public void doAction(int index,String params) { if(index>0 && index <=3) { Message msg = mHandler.obtainMessage(index); Bundle bundle = new Bundle(); bundle.putString("key", params); msg.setData(bundle); mHandler.sendMessage(msg); } else { TraceLog.w(index+""); } } public static class MyHandler extends Handler{ public MyHandler() { super(); } public MyHandler(Looper loop) { super(loop); } /*make sure that the looper is main or not *so you can update UI or send main handler to do it. * */ @Override public void handleMessage(Message msg) { Bundle bundle = msg.getData(); String params = bundle.getString("key"); TraceLog.i(params); switch(msg.what) { case ThreadConstant.INDEX_1: TraceLog.d("INDEX_1"); break; case ThreadConstant.INDEX_2: TraceLog.d("INDEX_2"); break; case ThreadConstant.INDEX_3: TraceLog.d("INDEX_3"); break; } } }}
原标题:android 进程/线程管理(三)
关键词:Android
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。