Android Studio多執行緒處理
Android Studio多執行緒處理
Thread
Java的標準執行續
如果需要長時間執行Thread會比較適合
無法直接與UI溝通,如果需要修改UI必須通過其他類別來設定
基本應用
第一種
與Runnable搭配使用
Thread mThread =
new
Thread(
rnb
)
;
mThread. start() ;
mThread. start() ;
private
Runnable
rnb
=
new
Runnable ()
{
public void
run
()
{
//
執行的動作
}
} ;
第二種
建class繼承Thread
private
CThread
mThread
;
mThread
=
new
CThread()
;
mThread .start() ;
mThread .start() ;
private class
extends
Thread
{
@Override
public void
run
()
{
//
執行的動作
}
}
額外應用
可以搭配第二種方式製造不斷執行的執行緒
isInterrupted()為檢測該執行緒是否中斷
while
(!isInterrupted())
{
}
{
}
mThread.isAlive()使用Boolean的方式指出目前執行緒的執行狀態
mThread.getState()返迴執行緒的確切狀態
Handler
主要處理背景執行緒與主執行緒之間的溝通
基本應用
第一種
跟Thread一樣可以與Runnable搭配使用
Handler mhandler =
new
Handler()
;
mhandler.post( r1 ) ;
mhandler.post( r1 ) ;
private
Runnable
r1
=
new
Runnable ()
{
public void
run
()
{
//
執行的動作
}
} ;
第二種
與Message搭配使用
Message mssg =
new
Message()
;
mssg. what = 1 ;
mHandler .sendMessage(mssg) ;
mssg. what = 1 ;
mHandler .sendMessage(mssg) ;
private
Handler
mHandler
=
new
Handler()
{
@Override
public void handleMessage (Message msg)
{
switch (msg. what )
{
case 1 :
break;
}
}
} ;
{
@Override
public void handleMessage (Message msg)
{
switch (msg. what )
{
case 1 :
break;
}
}
} ;
AsyncTask
能夠同時在後台進行資料處理短時間操作
官方建議短時間操作
基本應用
Task task =
new
Task()
;
task.execute() ;
task.execute() ;
private class Task extends AsyncTask<String, Void, String> {
/*
onPreExecute -- AsyncTask 執行前的準備工作
doInBackground -- 實際要執行的程式碼就是寫在這裡,
onProgressUpdate -- 用來顯示目前的進度,
onPostExecute -- 執行完的結果 - Result 會傳入這裡。
*/
protected void onPreExecute() {
//執行前 設定可以在這邊設定
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
//執行中 在背景做事情
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
//執行中 可以在這邊告知使用者進度
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String bitmap) {
//執行後 完成背景任務
super.onPostExecute(bitmap);
}
}
留言
張貼留言