[[Android関連]] > 非同期処理を行う(Android)
* 非同期処理を行う(Android) [#ue242a56]

#setlinebreak(on)

** Handler を使用する [#ob957ef1]
// http://android.keicode.com/basics/async-update.php
#mycode(){{
public class AsyncTest1 extends Activity {

	Handler handler;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
			・
			・
		handler = new Handler();
			・
			・

		// ボタン押下時
		View btn = findViewById(R.id.hoge_btn);
		btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				handler.post(new Runnable(){
					@Override
					public void run() {

						// ここで時間のかかる処理を行う

					}
				});
			}
		});
	}
}}

&br;

** AsyncTaskを使用する [#c87f7fa4]
AsyncTaskを利用すれば Thread 等を意識することなく、比較的シンプルに非同期処理を記述する事ができる。
#mycode(){{
AsyncTask<Object, Integer, Boolean> task = new AsyncTask<Object, Integer, Boolean>() {

	// 非同期に行う処理(別スレッドで実行される)
	@Override
	protected Boolean doInBackground(Object... params) {

		// ここで時間のかかる処理を行う

		return true; // 処理結果を返却
	}

	// 非同期処理が終わった後に行う処理(メインスレッドで実行される)
	@Override
	protected void onPostExecute(Boolean result) {

		if (result) {
			view1.setText("成功しました");
		} else {
			view1.setText("失敗しました");
		}

	}
	// 他に onPreExecute(非同期処理前)、onProgressUpdate(実行中処理) が記述できる
}
task.execute();
}}

&br;

** IntentService を使用する [#zfa0feca]
// http://techbooster.org/android/application/1570/
#mycode(){{
TODO
}}

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS