import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.HandlerThread;import android.os.Looper;import android.os.Message;import android.util.Log;import com.wv1124.adnroid.R;public class HandleTestActivity extends Activity {Handler handler = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Log.d("DEBUG", "Activity-->" + Thread.currentThread().getId());// 生成一个HandlerThread对象,为了使Handler在此线程中执行;HandlerThread handlerThread = new HandlerThread("handler_thread") {@Overridepublic void run() {Log.d("DEBUG", "handlerThread-->"+ Thread.currentThread().getId());super.run(); // 注意,不要重写;}};// 启动线程;handlerThread.start();//Looper p = Looper.myLooper(); //也可以使用主线程的Looper但会使主线程停止执行等待;// handlerThread.getLooper()初始化Handler使Hander在handlerThread的程线中执行;handler = new Handler(handlerThread.getLooper()) {@Overridepublic void handleMessage(Message msg) {Bundle b = msg.getData();int age = b.getInt("age");String name = b.getString("name");Log.d("DEBUG", "Handler-->" + Thread.currentThread().getId()+ " : age is " + age + ", name is" + name);}};// 可以这样发消息;// Message msg = handler.obtainMessage();// Bundle b = new Bundle();// b.putInt("age", 20);// b.putString("name", "Jhon");// msg.setData(b);// msg.sendToTarget();// 工作线程;Thread t = new Thread() {private int i = 0;@Overridepublic void run() {Log.d("DEBUG", "work Thread-->"+ Thread.currentThread().getId() + " start;");Message msg = new Message();Bundle b = new Bundle();b.putInt("age", i++);b.putString("name", "Jhon" + i++);msg.setData(b);handler.sendMessage(msg); // 发消息给Handler所在的线程;if (i < 3) {handler.postDelayed(this, 30000); // 重复定时任务;}Log.d("DEBUG", "work Thread-->"+ Thread.currentThread().getId() + " exit;");}// 注意此方法没有在Handler被调用,Handler直接调用run方法;public synchronized void start() {Log.d("DEBUG", "work Thread start()");super.start();}};t.setName("work thread");t.start(); // 主线程中调用start()方法;// // 定时器功能;// Thread t = new Thread() {// @Override// public void run() {// Log.d("DEBUG", "*");// handler.postDelayed(this, 3000);// }// };// t.start();// Log.d("DEBUG", "t.start()");}}

相关参考:

深入理解Android消息处理系统——Looper、Handler、Thread

更多相关文章

  1. Android 显示/隐藏 软键盘 方法
  2. Android中的一些方法-----生生不息
  3. android 模拟器 PANIC: Could not open: AVD 解决方法
  4. Android里面WebView加载HTML里面点击按钮调我Android方法
  5. android 判断是否在主线程的方法
  6. Android 控件最上层显示方法
  7. 〖Android〗(CM10.2)Android4.2/4.3中的boot.img打包方法(合适三星e
  8. android解决UI阻塞问题——创建AsyncTask 子线程
  9. android 常用方法集合

随机推荐

  1. Unity Android 内置付费 相关。。。
  2. Android Fragment完全解析,关于碎片你所需
  3. Android(安卓)opencv人脸识别
  4. Android studio安装之前配置环境变量
  5. android 完全退出应用程序
  6. Android(安卓)boundCenterBottom
  7. Android 如何搭建一个局域网 Web 服务器
  8. Android(安卓)Matrix源码详解
  9. ListView中item点击事件、item保持选中状
  10. android 背景shape的使用