1 package jp.sourceforge.gokigen.memoma.io;
3 import android.app.ProgressDialog;
4 import android.content.Context;
5 import android.content.SharedPreferences;
6 import android.os.AsyncTask;
7 import android.preference.PreferenceManager;
8 import android.util.Log;
10 import jp.sourceforge.gokigen.memoma.R;
11 import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
14 * データをファイルに保存するとき用 アクセスラッパ (非同期処理を実行)
16 * MeMoMaObjectHolder : 実行時に渡すクラス(Param)
17 * Integer : 途中経過を伝えるクラス(Progress)
18 * String : 処理結果を伝えるクラス(Result)
23 public class MeMoMaFileSavingProcess extends AsyncTask<MeMoMaObjectHolder, Integer, String>
25 private final String TAG = toString();
27 private final Context context;
28 private final IResultReceiver receiver;
29 private final ISavingStatusHolder statusHolder;
31 private final String backgroundUri;
32 private final String userCheckboxString;
33 private final ProgressDialog savingDialog;
38 public MeMoMaFileSavingProcess(Context context, ISavingStatusHolder holder, IResultReceiver resultReceiver)
40 this.context = context;
41 receiver = resultReceiver;
42 statusHolder = holder;
44 // プログレスダイアログ(「保存中...」)を表示する。
45 savingDialog = new ProgressDialog(context);
46 savingDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
47 savingDialog.setMessage(context.getString(R.string.dataSaving));
48 savingDialog.setIndeterminate(true);
49 savingDialog.setCancelable(false);
52 // 設定読み出し用...あらかじめ、UIスレッドで読みだしておく。
53 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
54 backgroundUri = preferences.getString("backgroundUri","");
55 userCheckboxString = preferences.getString("userCheckboxString","");
58 statusHolder.setSavingStatus(false);
66 protected void onPreExecute()
69 statusHolder.setSavingStatus(false);
74 * (バックグラウンドで実行する(このメソッドは、UIスレッドと別のところで実行する))
77 protected String doInBackground(MeMoMaObjectHolder... datas)
80 statusHolder.setSavingStatus(true);
83 MeMoMaFileSavingEngine savingEngine = new MeMoMaFileSavingEngine(context, backgroundUri, userCheckboxString);
84 String result = savingEngine.saveObjects(datas[0]);
89 statusHolder.setSavingStatus(false);
99 protected void onProgressUpdate(Integer... values)
109 protected void onPostExecute(String result)
113 if (receiver != null)
115 receiver.onSavedResult(result);
120 Log.v(TAG, "MeMoMaFileSavingProcess::onPostExecute() : " + ex.toString());
123 savingDialog.dismiss();
126 statusHolder.setSavingStatus(false);
131 * 結果報告用のインタフェース(積極的に使う予定はないけど...)
133 public interface IResultReceiver
136 void onSavedResult(String detail);
140 * ファイル保存実施状態を記憶するインタフェースクラス
142 public interface ISavingStatusHolder
145 void setSavingStatus(boolean isSaving);
148 boolean getSavingStatus();