Android関連 > 非同期処理を行う(Android)

非同期処理を行う(Android)

Handler を使用する

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() {

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

					}
				});
			}
		});
	}


AsyncTaskを使用する

AsyncTaskを利用すれば Thread 等を意識することなく、比較的シンプルに非同期処理を記述する事ができる。

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();


IntentService を使用する

TODO

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-09-16 (水) 22:08:46 (3144d)