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.Main;
11 import jp.sourceforge.gokigen.memoma.R;
12 import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
15 * データをファイルに保存するとき用 アクセスラッパ (非同期処理を実行)
18 * MeMoMaObjectHolder : 実行時に渡すクラス(Param)
19 * Integer : 途中経過を伝えるクラス(Progress)
20 * String : 処理結果を伝えるクラス(Result)
25 public class MeMoMaFileSavingProcess extends AsyncTask<MeMoMaObjectHolder, Integer, String>
27 private final String TAG = toString();
29 private final Context context;
30 private IResultReceiver receiver = null;
31 //private ExternalStorageFileUtility fileUtility = null;
32 private ISavingStatusHolder statusHolder = null;
34 private String backgroundUri = null;
35 private String userCheckboxString = null;
36 private ProgressDialog savingDialog = null;
41 public MeMoMaFileSavingProcess(Context context, ISavingStatusHolder holder, IResultReceiver resultReceiver)
43 this.context = context;
44 receiver = resultReceiver;
45 statusHolder = holder;
47 // プログレスダイアログ(「保存中...」)を表示する。
48 savingDialog = new ProgressDialog(context);
49 savingDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
50 savingDialog.setMessage(context.getString(R.string.dataSaving));
51 savingDialog.setIndeterminate(true);
52 savingDialog.setCancelable(false);
55 // 設定読み出し用...あらかじめ、UIスレッドで読みだしておく。
56 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
57 backgroundUri = preferences.getString("backgroundUri","");
58 userCheckboxString = preferences.getString("userCheckboxString","");
61 statusHolder.setSavingStatus(false);
69 protected void onPreExecute()
72 statusHolder.setSavingStatus(false);
77 * (バックグラウンドで実行する(このメソッドは、UIスレッドと別のところで実行する))
81 protected String doInBackground(MeMoMaObjectHolder... datas)
84 statusHolder.setSavingStatus(true);
87 MeMoMaFileSavingEngine savingEngine = new MeMoMaFileSavingEngine(context, backgroundUri, userCheckboxString);
88 String result = savingEngine.saveObjects(datas[0]);
93 statusHolder.setSavingStatus(false);
103 protected void onProgressUpdate(Integer... values)
113 protected void onPostExecute(String result)
117 if (receiver != null)
119 receiver.onSavedResult(result);
124 Log.v(TAG, "MeMoMaFileSavingProcess::onPostExecute() : " + ex.toString());
127 savingDialog.dismiss();
130 statusHolder.setSavingStatus(false);
135 * 結果報告用のインタフェース(積極的に使う予定はないけど...)
140 public interface IResultReceiver
143 public abstract void onSavedResult(String detail);
147 * ファイル保存実施状態を記憶するインタフェースクラス
152 public interface ISavingStatusHolder
155 public abstract void setSavingStatus(boolean isSaving);
158 public abstract boolean getSavingStatus();