-
Notifications
You must be signed in to change notification settings - Fork 225
Closed
Description
若使用以下代码开启StrictMode, 会在文件上传后抛出异常,应用退出,提示相应的RandomAccessFile未关闭。
if (BuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
}异常:
08-26 14:57:50.913 27269-27281/com.meiyaapp.meiya E/StrictMode﹕ A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'close' not called
at dalvik.system.CloseGuard.open(CloseGuard.java:184)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:127)
at com.qiniu.android.storage.ResumeUploader.run(ResumeUploader.java:78)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
08-26 14:57:50.913 27269-27281/com.meiyaapp.meiya W/System.err﹕ StrictMode VmPolicy violation with POLICY_DEATH; shutting down.
将StrictMode的开启代码移除后,应用就不会直接退出了,但提示的RandomAccessFile未关闭,应该是存在的。 我大致看了下com.qiniu.android.storage.ResumeUploader的代码,貌似确实没有关闭代码。
这个应该是要处理下的, 否则文件上传后,相应的文件对象都没有关闭,长期操作会不会对应用产生影响。
Metadata
Metadata
Assignees
Labels
No labels