2011年10月28日 星期五

[概念] Handler/Looper/Message Queue/Headler Thread

- Android的Activity/Service/Broadcast Receiver/Content Provider都是執行再Main Thread(GUI )中
  , 也就是GUI Thread , 若在Activity/Service中占據執行時間超過5秒 , 就會產生ANR , 若是
  Broadcast Receiver中占據執行時間超過10秒就會產生ANR

- 遠端物件透過Bound方式呼叫Service ,  或是呼叫Content Provider , 系統會自動為每一個
  呼叫產生Bind Thread , 避免Thread Safe問題

- 多執行緒和Handler關系
http://j796160836.pixnet.net/blog/post/28766165-%5Bandroid%5D-%E5%A4%9A%E5%9F%B7%E8%A1%8C%E7%B7%92-handler%E5%92%8Cthread%E7%9A%84%E9%97%9C%E4%BF%82


- HandlerThread的用法如下 , 是內有Looper的Thread , 一般的Thread執行後會結束
這種Thread會進入等待狀況
http://developer.android.com/reference/android/os/HandlerThread.html
HandlerThread mBackgroundThread = new HandlerThread("ContactsProviderWorker",
                Process.THREAD_PRIORITY_BACKGROUND);
        mBackgroundThread.start();
        mBackgroundHandler = new Handler(mBackgroundThread.getLooper()) {
            @Override
            public void handleMessage(Message msg) {
                //performBackgroundTask(msg.what, msg.obj);
            }
        };
使用:
mBackgroundHandler.sendEmptyMessage(task);



Android中的MessageQueue,Handler,Looper和Thread


http://www.limodev.cn/blog/archives/1207

沒有留言:

張貼留言