More Related Content
Similar to Android勉強会第二回-非同期処理-
Similar to Android勉強会第二回-非同期処理- (20)
Android勉強会第二回-非同期処理-
- 20. AsyncTask
!
class DBTask extends AsyncTask<Void, Void, Void> {
// ここはUIスレッドで動きます
@Override
protected void onPreExecute() {
super.onPreExecute();
// ユーザを待たせたいときにダイアログを出すなどの処理
}
!
// ここはワーカースレッドで動きます
@Override
protected Void doInBackground(Void... params) {
//非同期で行いたい処理。DB登録、取得など。
return null;
}
!
// ここはUIスレッドで動きます
@Override
protected void onPostExecute(Void result) {
//非同期処理が終わった後に実行したいUI操作。
//通信が終わったことをユーザに通知させる処理や、ダイアログのクローズなど
super.onPostExecute(result);
}
}
- 37. 何を使えば・・・?
ExecutorService
private void postExecute() throws InterruptedException{
Runnable task = new Runnable() {
@Override
public void run() {
//非同期で実行したい処理
}
};
//実行
exe.execute(task);
//これ以上タスクを動かすのを禁止する
exe.shutdown();
//5秒待っても終了していなかった場合強制終了させる
if(!exe.awaitTermination(5000, TimeUnit.MICROSECONDS))
exe.shutdownNow();
}