| クラス |
スレッド種別 |
用途 |
サンプル |
| Handler |
メインスレッド |
UI操作 |
Handler handler=new Handler();
handler.postDelayed(new Runnable(){
public void run() {
android.util.Log.e("","UI操作可能");
}
},100); |
| Message |
メインスレッド |
UI操作。
任意の引数追加とキャンセル可能 |
Handler handler=new Handler();
Message msg=Message.obtain(handler,new Runnable() {
public void run() {
android.util.Log.e("","UI操作可能");
}
});
msg.what=MESSAGE_ID;//メッセージID
msg.obj=object; //任意のオブジェクト引数
msg.arg1=0; //任意のint引数
msg.arg2=0; //任意のint引数
handler.sendMessageDelayed(msg,100); |
handler.removeMessages(MESSAGE_ID); |
| Thread |
独自スレッド |
UI操作不可。
メインスレッドとは別に裏で処理 |
Thread thread=new Thread(){
public void run() {
android.util.Log.e("","UI操作不可");
}
};
thread.start(); |
| Timer |
独自スレッド |
UI操作不可。
メインスレッドとは別に裏で繰り返し処理 |
Timer timer=new Timer();
TimerTask task=new TimerTask() {
public void run() {
android.util.Log.e("","UI操作不可");
}
};
timer.schedule(task,0,100); |
| AsyncTask |
メインスレッド+
独自スレッド
|
メインスレッドと独自スレッドが共存 |
public class DownloadTask extends AsyncTask<T1, T2, T3> {
@Override
protected T3 doInBackground(T1... args) {
android.util.Log.e("","UI操作不可");
}
@Override
protected void onPostExecute(T3 result) {
android.util.Log.e("","UI操作可能");
}
} |
new DownloadTask().execute(args); |
| IntentService |
インテントサービス |
UI操作不可。
フォアグラウンドでなくても殺されない。 |
public class MyIntentService extends IntentService {
public MyIntentService() {
super("MyIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
android.util.Log.e("debug","UI操作不可");
}
} |
Intent intent=new Intent(this,MyIntentService.class);
startService(intent); |
<service android:name=".MyIntentService"></service> |