安卓程式的主線程也叫ui執行緒。
工作執行緒和主線程的差別:安卓主線程已經呼叫了looper.prepare()方法了,已經有乙個messagequeue物件了,所以才可以在工作執行緒用handler發訊息到主線程:因為主線程有訊息佇列,發的訊息都存在佇列裡面,並且主線程已經有looper進行取訊息了。mainactivity:自己建立的工作執行緒是沒有messagequeue和looper,所以不能向工作執行緒發訊息,因為沒有存訊息的地方和取訊息的東西。但是他可以有messagequeue和looper。
messagequeue是訊息佇列,looper輪訓從訊息佇列中取訊息,handler用於傳送和處理訊息。
package頁面:com.sxt.day06_02;
import
import
android.os.bundle;
import
android.os.handler;
import
android.os.looper;
import
android.os.message;
import
android.os.systemclock;
import
android.util.log;
import
android.view.view;
import
android.view.view.onclicklistener;
import
android.widget.progressbar;
import
android.widget.textview;
import
android.widget.toast;
public
class mainactivity extends
activity
private
void
createworkthread()
//迴圈結束後傳送完成訊息
message msg2 =message.obtain();
msg2.what=download_finish;
mmainhanlder.sendmessage(msg2);
//傳送到主線程
} };
};looper.loop();
//輪詢messagequeue,取到訊息後交給mwokrthreadhanler的handlemessage()方法進行處理(上面的方法),
}; }.start();
}private
void
setlistener()
});}
private
void
initmainhandler() }};
}private
void
initview()
}
<linearlayout
xmlns:android
=""android:layout_width
="match_parent"
android:layout_height
="match_parent"
android:orientation
="vertical"
>
<
button
android:id
="@+id/btnstartdownload"
android:layout_width
="match_parent"
android:layout_height
="wrap_content"
android:text
/>
<
progressbar
android:id
="@+id/pb"
android:layout_width
="match_parent"
android:layout_height
="wrap_content"
style
="@android:style/widget.progressbar.horizontal"
android:max
="100"
/>
<
textview
android:id
="@+id/tvprogress"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
android:textsize
="20sp"
android:text
="0%"
/>
linearlayout
>
android執行緒間通訊
原文 1,通過handler機制.private void one new thread catch interruptedexception e message message new message message.what 123 message.obj 通過handler機制 handler...
Android通訊 Android執行緒間通訊
android程式中,執行緒分為主線程 ui thread 和工作執行緒 work thread 我們要遵循單執行緒模型原則 安卓ui的操作執行緒不安全,安卓ui的操作必須在主線程進行。1 多執行緒任務開發可以通過以下幾個方式實現 handler asynctask。詳見 2 如果子執行緒的資料想通...
android 執行緒間的通訊
在android,執行緒分為有訊息迴圈的執行緒和沒有訊息迴圈的執行緒,有訊息迴圈的執行緒一般都會有乙個looper,這個是android 的新概念。我們的主線程 ui執行緒 就是乙個訊息迴圈的執行緒。針對這種訊息迴圈的機制,我們引入乙個新的機制handler,我們有訊息迴圈,就要往訊息迴圈裡面傳送相...