HandThread

1,
activity1àactivity2,再返回到activity1时,activity2一定会调用onDestory,但不一定finalize

2,
handler thread通常作为activity2的成员变量。activity2 被释放的时候,handler 一定会被释放,但thread不会释放。所以handler绝对是安全的,不会有垃圾。

3,
activity2onDestory里加上thread.getLooper().quit();
activity2退出时,thread就会停止(但是需要把thread当前动作跑完)



  1. package com.mp;
  2.   import android.app.Activity;
  3.   import android.os.Bundle;
  4.   import android.os.Handler;
  5.   import android.os.HandlerThread;
  6.   public class MyThread2 extends Activity {
  7.   private Handler handler = null;
  8.   @Override
  9.   public void onCreate(Bundle savedInstanceState) {
  10.   super.onCreate(savedInstanceState);
  11.   HandlerThread handlerThread = new HandlerThread("myHandlerThread");
  12.   handlerThread.start();
  13.   handler = new Handler(handlerThread.getLooper());
  14.   handler.post(new MyRunnable());
  15.   System.out.println("Oncreate---The Thread id is :"
  16.   Thread.currentThread().getId());
  17.   setContentView(R.layout.main);
  18.   }
  19.   private class MyRunnable implements Runnable {
  20.   public void run() {
  21.   System.out.println("Runnable---The Thread is running");
  22.   System.out.println("Runnable---The Thread id is :"
  23.   Thread.currentThread().getId());
  24.   try {
  25.   Thread.sleep(6000);
  26.   } catch (InterruptedException e) {
  27.   // TODO Auto-generated catch block
  28.   e.printStackTrace();
  29.   }
  30.   }
  31.   }
  32.   }
复制代码
  在这个demo中,用到了HandlerThread,在HandlerThread对象中可以通过getLooper方法获取一个Looper对象控制句柄,我们可以将其这个Looper对象映射到一个Handler中去来实现一个线程同步机制。于是就有以下结果;
  1:控制台的输出: Oncreate---The Thread id is :1
  Runnable---The Thread is running
  Runnable---The Thread id is :10
  2:程序启动后,我们立刻看到main.xml中的内容。
  这样就达到了多线程的结果。

你可能感兴趣的:(HandThread)