2011-06-26 7 views
0

私のAndroidアプリケーションはデータを最初のランチだけダウンロードします。データは〜2500MBのファイルで〜50MBです。
1.ファイルがSharedSettingsにダウンロードされたかどうかを保存することをお勧めしますか?問題は、ユーザーがデータアプリケーションを(おそらく誤って)クリアすると、すべてを再ダウンロードする必要があるということです。何その後、すべて?:フォルダとすべてのデータが既に存在することを確認してください

if(new File(/data/data/../databases/myDB.db).exists){//dont download} 

2.Isが取得をダウンロードする場合、私は手動では、DBが存在するかどうかを確認することをお勧めし、/data/data/../databases/するプレパックデータベースをコピーしていない、とフォルダのサイズとチェックは、フォルダ+データが良いかどうかを確認するのと同じ良い方法ですか? 2つのフォルダが同じかどうかを確認する良い方法がありますか?
ありがとうございます。

答えて

1

いいえ、50MBのデータをSharedSettingsに入れないでください。それは転倒して死ぬでしょう。 SharedSettingsのセットはディスク上のXMLに格納され、開かれるとRAMに完全にロードされます。これにより、ユーザーはこのデータを消去しません。

データがダウンロードされたかどうかを判断するには、ダウンロードが完了したらファイルを作成することをお勧めします。ユーザーはファイルを選択的に削除することはできません。彼らはあなたのデータをクリアすることができますが、それはまた、センチネルファイルをクリアし、あなたは再ダウンロードする必要があることを知っているでしょう。 (。また、あなたはそれが途中で中断してしまった場合、ダウンロードを再起動するに対処する必要があります覚えておいてください)

また、ここで説明するように、あなたが正しくファイルシステム操作を処理してください:http://android-developers.blogspot.com/2010/12/saving-data-safely.html

+0

彼はファイルがsharedprefsにダウンロードされた-if-格納したと述べたかなり確認してくださいブール旗のように。実際のデータではありません。まともな解決策になるでしょう。ユーザーがアプリデータを消去した場合は、おそらく再確認する必要があります。 – Eric

+0

Yea haha​​私はブール値を格納することを意味しました(Ericが言ったように)。あなたの答えをありがとう – Omar

0

代替アイデアあなたが」データファイルの欠落を心配しています...あなたのアプリケーションがファイルを探していて、それが存在しない場合は例外をスローし、ダイアログを表示してデータを検証するハンドラに渡します。必要なすべてのデータファイルのリストを保存し、存在しないデータファイルのみをダウンロードすることができます。もしそうなら、システムチェックのようなもの。

彼らは彼らだけが誤ってルートエクスプローラ;-)で削除されたカップルのファイルが欠落している場合、彼らは50メガバイトをダウンロードするまで終わらないその方法

+0

良い提案、答えに感謝します。 – Omar