私のアプリでは、ローカル データの保存に 3 つのファイルを使用します。そのうちの 2 つは、アプリの起動時にチェックされ、リモートで更新されます (新しいバージョンが利用可能であるか、ファイルがまだ存在しない場合)。3 つ目は、アプリの実行中に定期的に保存できるユーザー データ用です。
3 つすべてが同じ方法を使用してファイルを保存します。
public boolean setLocalFile(String Filename, String FileText, Context con) {
try {
FileOutputStream fos = con.openFileOutput(Filename, Context.MODE_PRIVATE);
fos.write(FileText.getBytes());
fos.close();
return true;
} catch(Exception e) {
handleError(e); // local method that simply does a System.out.println
return false;
}
}
これで、3 番目のファイルは正常に書き込まれますが、最初の 2 つのファイル (起動時にチェックされ、書き込まれる) はまったく書き込まれません。デバッグでは、setLocalFile メソッドが例外をスローしたりアプリをクラッシュさせたりせずに完全にスキップされたかのように表示され、報告される唯一のエラー ログは次のようになります。
07-11 16:14:13.162: ERROR/AndroidRuntime(1882): ERROR: thread attach failed
07-11 16:14:18.882: ERROR/gralloc(62): [unregister] handle 0x3bfe40 still locked (state=40000001)
残念ながら、これらに関連して、オンラインで役立つものは何も見つかりませんでした。
それは私を困惑させました-なぜこの特定のケースで書いていないのかわかりません. 何か案は?