Androidの多线程之HandlerThread

来源:互联网 发布:网上淘宝贷款是真的吗 编辑:程序博客网 时间:2024/05/16 11:09

1.Handler.post(Runnable),必须要有有Looper。

 1 package com.bvin.study.thread; 2  3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.os.Handler; 6 import android.os.HandlerThread; 7 import android.os.Looper; 8 import android.os.Message; 9 import android.util.Log;10 11 public class MainActivity extends Activity {12     /** Called when the activity is first created. */13     14     /*private Handler handler = new Handler(){15 16         @Override17         public void handleMessage(Message msg) {18             // TODO Auto-generated method stub19             super.handleMessage(msg);20             setTitle((String)msg.obj);21             22         }23         24         25         26     };*/27     private Handler handler = null;28     29     public int flag = 0;30     @Override31     public void onCreate(Bundle savedInstanceState) {32         super.onCreate(savedInstanceState);33         /*Handler+HandlerThread*/34         HandlerThread handerThread = new HandlerThread("myHanderThread");//建立HandlerThread35         handerThread.start();//运行HandlerThread(一定要开始才能获取Looper.否则得到是空值)36         Looper looper = handerThread.getLooper();//获取消息循环37         handler = new Handler(handerThread.getLooper());//建立带消息循环的Handler38         handler.post(new WorkRun());//执行线程39         40         /*Thread+Runnable*/41         /*Thread th = new Thread(new WorkRun());42         th.start();*/43         44         Log.e("ID:"+Thread.currentThread().getId(), "MainThread is running");45         setContentView(R.layout.main);46         47     }48     49     50     private class WorkRun implements Runnable{51 52         @Override53         public void run() {54             // TODO Auto-generated method stub55             56             Log.e("ID:"+Thread.currentThread().getId(), "WorkThread is running");57             58             try {59                 Thread.sleep(1000*6);60             } catch (InterruptedException e) {61                 // TODO Auto-generated catch block62                 e.printStackTrace();63             }64             65         }66         67         68         69     }70 }