Androidアプリ開発

【Android】AsyncTaskで大量の文字列をバックグラウンド処理で表示する

Androidで読み物系のアプリの場合、String.xmlから文字列を大量に読み込むことがあるが、表示するまで時間がかかってしまうためAsyncTaskを使ったバッググラウンド処理にて表示を行う方法。

 

以下がバックグラウンド処理で文字列を表示するサンプルコード。

import android.content.Context;
import android.os.AsyncTask;
import android.widget.TextView;

public class StringShutoku extends AsyncTask<String, Void, String> {
	private Context context;
	private TextView textview;

	public StringShutoku(TextView textview, Context context) {
		this.context = context;
		this.textview = textview;
	}

	public StringShutoku() {
	}

	@Override
	protected String doInBackground(String... params) {

		// バックグラウンド処理で文字列を読み込み
		String str = null;
		synchronized (context) {
			str = context.getString(R.string.test);
		}
		return str;
	}

	@Override
	protected void onPostExecute(String result) {

		// 取得した文字列をセット
		this.textview.setText(result));
	}
}

※ポイント

・クラスの第3引数は、doInBackgroundの戻り値と合わせる

・onPostExecuteの引数はdoInBackgroundの戻り値と同じ値

・doInBackground内のsynchronizedは、メモリ不足防止のため

 

呼び出す側は以下で

StringShutoku task = new StringShutoku(textview, getApplicationContext());
task.execute();