1. masahide318

    Posted

    masahide318
Changes in title
+AsyncTaskにリスナーを追加してActivityで処理する
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,98 @@
+
+原型のAsyncTask
+
+```java:AsyncTaskSample
+
+public class AsyncTaskSample extends AsyncTask<Void, Integer, String> {
+ //Activiyへのコールバック用interface
+ public interface AsyncTaskCallback {
+ void preExecute();
+ void postExecute(String result);
+ void progressUpdate(int progress);
+ void cancel();
+ }
+
+ private AsyncTaskCallback callback = null;;
+
+ public AsyncTaskSample(AsyncTaskCallback _callback) {
+ this.callback = _callback;
+ }
+
+ @Override
+ protected void onPreExecute() {
+ super.onPreExecute();
+ callback.preExecute();
+ }
+
+ @Override
+ protected void onCancelled() {
+ super.onCancelled();
+ callback.cancel();
+ }
+
+ @Override
+ protected void onPostExecute(String result) {
+ super.onPostExecute(result);
+ callback.postExecute(result);
+ }
+
+ @Override
+ protected void onProgressUpdate(Integer... values) {
+ super.onProgressUpdate(values);
+ callback.progressUpdate(values[0]);
+ }
+
+ @Override
+ protected String doInBackground(Void... params) {
+ return null;
+ }
+}
+
+```
+(空行)
+実装するActivity
+
+```java:Activity
+public class SampleActivity {
+ public void onCreate(Bundle savedInstanceState) {
+ AsyncTaskSample sampleTask = new AsyncTaskSample(new AsyncTaskCallback() {
+ public void preExecute() {
+ //だいたいの場合ダイアログの表示などを行う
+ }
+ public void postExecute(String result) {
+ //AsyncTaskの結果を受け取ってなんかする
+ }
+ public void progressUpdate(int progress) {
+ //だいたいプログレスダイアログを進める
+ }
+ public void cancel() {
+ //キャンセルされた時になんかする
+ }
+ });
+ sampleTask.execute();
+ }
+}
+```
+
+または
+
+```java:Activity
+public class SampleActivity implements AsyncTaskCallback {
+ public void onCreate(Bundle savedInstanceState) {
+ AsyncTaskSample sampleTask = new AsyncTaskSample(this);
+ sampleTask.execute();
+ }
+ public void preExecute() {
+ //だいたいの場合ダイアログの表示などを行う
+ }
+ public void postExecute(String result) {
+ //AsyncTaskの結果を受け取ってなんかする
+ }
+ public void progressUpdate(int progress) {
+ //だいたいプログレスダイアログを進める
+ }
+ public void cancel() {
+ //キャンセルされた時になんかする
+ }
+}
+```