我的应用出现了一个奇怪的错误。
在我的应用中,可以下载zip文件,读取其中的内容,也可以删除它。不管里面是什么。
问题:只有在摩托罗拉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上也遇到了这个错误。