アプリで奇妙なエラーが発生しました。
私のアプリでは、zipFile をダウンロードし、コンテンツをそのまま読み取り、削除することもできます。それが正確に何であるかは問題ではありません。
問題: Motorola Xoom (バージョン 4.0.4) でのみ、ファイルをダウンロードして解凍し、データを読み取り、すべてを削除できます。しかし、ファイルを再度ダウンロードしようとすると、ファイルを解凍してファイルを SD カードにコピーしているときに、エラー EBUSY (デバイスまたはリソースがビジー) でクラッシュします。
- なぜ最初だけ機能するのですか?
- そのエラーはどういう意味ですか?
- Xoom でのみこのエラーが発生するのはなぜですか?
私はそれに対する解決策を見つけることができません。他のすべてのデバイスでは正常に動作し、エラーや問題はありません。
LogCat:
07-18 12:27:46.774: E/PrepareMagTask(10057): IOException
07-18 12:27:46.774: E/PrepareMagTask(10057): java.io.FileNotFoundException: /mnt/sdcard/Android/data/com.xxxxxx.android/files/content/23760/emag.db: open failed: EBUSY (Device or resource busy)
07-18 12:27:46.774: E/PrepareMagTask(10057): at libcore.io.IoBridge.open(IoBridge.java:406)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
07-18 12:27:46.774: E/PrepareMagTask(10057): at com.xxxxx.android.util.io.ZipHelper.uncompressEntry(ZipHelper.java:35)
07-18 12:27:46.774: E/PrepareMagTask(10057): at com.xxxxx.android.task.PrepareMagTask.doInBackground(PrepareMagTask.java:271)
07-18 12:27:46.774: E/PrepareMagTask(10057): at com.xxxxx.android.task.PrepareMagTask.doInBackground(PrepareMagTask.java:1)
07-18 12:27:46.774: E/PrepareMagTask(10057): at android.os.AsyncTask$2.call(AsyncTask.java:264)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.lang.Thread.run(Thread.java:856)
07-18 12:27:46.774: E/PrepareMagTask(10057): Caused by: libcore.io.ErrnoException: open failed: EBUSY (Device or resource busy)
07-18 12:27:46.774: E/PrepareMagTask(10057): at libcore.io.Posix.open(Native Method)
07-18 12:27:46.774: E/PrepareMagTask(10057): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
07-18 12:27:46.774: E/PrepareMagTask(10057): at libcore.io.IoBridge.open(IoBridge.java:390)
07-18 12:27:46.774: E/PrepareMagTask(10057): ... 11 more
ZipHelper クラスの 35 行目でクラッシュします。
FileHelper.copy(zipFile.getInputStream(entry), new FileOutputStream(outputFile), modify);
getInputStream(entry) ...そして私は本当に理由を知りませんか?
デバイスがビジー状態のときにデバイスまたはリソースを待機する方法はありますか? これは、ファイルを解凍しようとするたびに発生し、アプリは 5 回 (ダウンロード -> 解凍) 試行し、毎回クラッシュします。
編集: Xoom だけではないことがわかりました。バージョン 4.0.4 の Asus Transformer にもエラーがあります。