1 package jp.sourceforge.gokigen.memoma.fileio;
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 IResultReceiver receiver = null;
28 private ExternalStorageFileUtility fileUtility = null;
29 private ISavingStatusHolder statusHolder = null;
31 private String backgroundUri = null;
32 private String userCheckboxString = null;
33 private ProgressDialog savingDialog = null;
38 public MeMoMaFileSavingProcess(Context context, ISavingStatusHolder holder, ExternalStorageFileUtility utility, IResultReceiver resultReceiver)
40 receiver = resultReceiver;
41 fileUtility = utility;
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スレッドと別のところで実行する))
78 protected String doInBackground(MeMoMaObjectHolder... datas)
81 statusHolder.setSavingStatus(true);
84 MeMoMaFileSavingEngine savingEngine = new MeMoMaFileSavingEngine(fileUtility, backgroundUri, userCheckboxString);
85 String result = savingEngine.saveObjects(datas[0]);
90 statusHolder.setSavingStatus(false);
100 protected void onProgressUpdate(Integer... values)
110 protected void onPostExecute(String result)
114 if (receiver != null)
116 receiver.onSavedResult(result);
121 Log.v(Main.APP_IDENTIFIER, "MeMoMaFileSavingProcess::onPostExecute() : " + ex.toString());
124 savingDialog.dismiss();
127 statusHolder.setSavingStatus(false);
132 * 結果報告用のインタフェース(積極的に使う予定はないけど...)
137 public interface IResultReceiver
140 public abstract void onSavedResult(String detail);
144 * ファイル保存実施状態を記憶するインタフェースクラス
149 public interface ISavingStatusHolder
152 public abstract void setSavingStatus(boolean isSaving);
155 public abstract boolean getSavingStatus();