StrictMode violations on app launch: I/O on UiThread
These strict mode violations occur when F-Droid is launched and amount to some seconds of delay:
07-11 17:03:58.298 16773-16773/org.fdroid.fdroid D/StrictMode: StrictMode policy violation; ~duration=332 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1293)
at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:249)
at java.io.File.exists(File.java:780)
at android.app.ContextImpl.getDataDir(ContextImpl.java:1938)
at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:466)
at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:627)
at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:345)
at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:164)
at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:487)
at org.fdroid.fdroid.Preferences.<init>(Preferences.java:34)
at org.fdroid.fdroid.Preferences.setup(Preferences.java:439)
at org.fdroid.fdroid.FDroidApp.onCreate(FDroidApp.java:223)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5448)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1564)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
07-11 17:03:58.298 16773-16773/org.fdroid.fdroid D/StrictMode: StrictMode policy violation; ~duration=330 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1293)
at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:249)
at java.io.File.exists(File.java:780)
at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:512)
at android.app.ContextImpl.getPreferencesDir(ContextImpl.java:468)
at android.app.ContextImpl.getSharedPreferencesPath(ContextImpl.java:627)
at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:345)
at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:164)
at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:487)
at org.fdroid.fdroid.Preferences.<init>(Preferences.java:34)
at org.fdroid.fdroid.Preferences.setup(Preferences.java:439)
at org.fdroid.fdroid.FDroidApp.onCreate(FDroidApp.java:223)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5448)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1564)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
07-11 17:03:58.298 16773-16773/org.fdroid.fdroid D/StrictMode: StrictMode policy violation; ~duration=328 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1293)
at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:213)
at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:234)
at org.fdroid.fdroid.Preferences.<init>(Preferences.java:36)
at org.fdroid.fdroid.Preferences.setup(Preferences.java:439)
at org.fdroid.fdroid.FDroidApp.onCreate(FDroidApp.java:223)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5448)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1564)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
07-11 17:03:58.298 16773-16773/org.fdroid.fdroid D/StrictMode: StrictMode policy violation; ~duration=254 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1293)
at java.io.FileInputStream.<init>(FileInputStream.java:145)
at java.io.FileInputStream.<init>(FileInputStream.java:99)
at org.acra.ACRA.getCurrentProcessName(ACRA.java:314)
at org.acra.ACRA.isACRASenderServiceProcess(ACRA.java:305)
at org.acra.ACRA.init(ACRA.java:213)
at org.acra.ACRA.init(ACRA.java:176)
at org.acra.ACRA.init(ACRA.java:160)
at org.acra.ACRA.init(ACRA.java:143)
at org.fdroid.fdroid.FDroidApp.onCreate(FDroidApp.java:226)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5448)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1564)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
07-11 17:03:58.299 16773-16773/org.fdroid.fdroid D/StrictMode: StrictMode policy violation; ~duration=252 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1293)
at libcore.io.BlockGuardOs.read(BlockGuardOs.java:230)
at libcore.io.IoBridge.read(IoBridge.java:471)
at java.io.FileInputStream.read(FileInputStream.java:252)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:287)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:350)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:179)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:172)
at java.io.BufferedReader.readLine(BufferedReader.java:335)
at java.io.BufferedReader.readLine(BufferedReader.java:400)
at org.acra.util.IOUtils.streamToString(IOUtils.java:125)
at org.acra.util.IOUtils.streamToString(IOUtils.java:81)
at org.acra.ACRA.getCurrentProcessName(ACRA.java:314)
at org.acra.ACRA.isACRASenderServiceProcess(ACRA.java:305)
at org.acra.ACRA.init(ACRA.java:213)
at org.acra.ACRA.init(ACRA.java:176)
at org.acra.ACRA.init(ACRA.java:160)
at org.acra.ACRA.init(ACRA.java:143)
at org.fdroid.fdroid.FDroidApp.onCreate(FDroidApp.java:226)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5448)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1564)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
07-11 17:03:58.299 16773-16773/org.fdroid.fdroid D/StrictMode: StrictMode policy violation; ~duration=241 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1293)
at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:249)
at java.io.File.exists(File.java:780)
at android.app.ContextImpl.getDataDir(ContextImpl.java:1938)
at android.app.ContextImpl.getDir(ContextImpl.java:1957)
at android.content.ContextWrapper.getDir(ContextWrapper.java:278)
at org.acra.file.ReportLocator.getUnapprovedFolder(ReportLocator.java:29)
at org.acra.file.ReportLocator.getUnapprovedReports(ReportLocator.java:34)
at org.acra.file.BulkReportDeleter.deleteReports(BulkReportDeleter.java:30)
at org.acra.util.ApplicationStartupProcessor.deleteAllUnapprovedReportsBarOne(ApplicationStartupProcessor.java:60)
at org.acra.ACRA.init(ACRA.java:265)
at org.acra.ACRA.init(ACRA.java:176)
at org.acra.ACRA.init(ACRA.java:160)
at org.acra.ACRA.init(ACRA.java:143)
at org.fdroid.fdroid.FDroidApp.onCreate(FDroidApp.java:226)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5448)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1564)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
07-11 17:03:58.299 16773-16773/org.fdroid.fdroid D/StrictMode: StrictMode policy violation; ~duration=239 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1293)
at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:249)
at java.io.File.exists(File.java:780)
at android.app.ContextImpl.getDir(ContextImpl.java:1958)
at android.content.ContextWrapper.getDir(ContextWrapper.java:278)
at org.acra.file.ReportLocator.getUnapprovedFolder(ReportLocator.java:29)
at org.acra.file.ReportLocator.getUnapprovedReports(ReportLocator.java:34)
at org.acra.file.BulkReportDeleter.deleteReports(BulkReportDeleter.java:30)
at org.acra.util.ApplicationStartupProcessor.deleteAllUnapprovedReportsBarOne(ApplicationStartupProcessor.java:60)
at org.acra.ACRA.init(ACRA.java:265)
at org.acra.ACRA.init(ACRA.java:176)
at org.acra.ACRA.init(ACRA.java:160)
at org.acra.ACRA.init(ACRA.java:143)
at org.fdroid.fdroid.FDroidApp.onCreate(FDroidApp.java:226)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5448)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1564)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
07-11 17:03:58.299 16773-16773/org.fdroid.fdroid D/StrictMode: StrictMode policy violation; ~duration=238 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1293)
at java.io.UnixFileSystem.list(UnixFileSystem.java:300)
at java.io.File.list(File.java:1059)
at java.io.File.listFiles(File.java:1137)
at org.acra.file.ReportLocator.getUnapprovedReports(ReportLocator.java:34)
at org.acra.file.BulkReportDeleter.deleteReports(BulkReportDeleter.java:30)
at org.acra.util.ApplicationStartupProcessor.deleteAllUnapprovedReportsBarOne(ApplicationStartupProcessor.java:60)
at org.acra.ACRA.init(ACRA.java:265)
at org.acra.ACRA.init(ACRA.java:176)
at org.acra.ACRA.init(ACRA.java:160)
at org.acra.ACRA.init(ACRA.java:143)
at org.fdroid.fdroid.FDroidApp.onCreate(FDroidApp.java:226)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5448)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1564)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
I don't know if it is possible to move the ACRA initialization to another thread, but the rest should be possible.