You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用startActivity触发StrictMode DiskReadViolation违规问题求助

调用startActivity触发StrictMode DiskReadViolation违规问题求助

各位大佬好,我遇到一个挺困惑的问题:我们在某个Activity里开启了StrictMode来检测违规操作,结果触发了DiskReadViolation,追踪到的问题点居然指向Activity类的startActivity()调用。我翻来覆去检查代码,完全没看到这段逻辑里有任何IO操作,实在搞不懂为什么会触发这个违规。

下面是捕获到的完整堆栈信息:

at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1659)
at android.database.sqlite.SQLiteConnection.applyBlockGuardPolicy(SQLiteConnection.java:1630)
at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:1298)
at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:838)
at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:157)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:144)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:238)
at android.database.AbstractCursor.moveToNext(AbstractCursor.java:287)
at com.android.server.enterprise.storage.EdmStorageProviderBase.getBooleanList(EdmStorageProviderBase.java:133)
at com.android.server.enterprise.storage.EdmStorageProviderBase.getBoolean(EdmStorageProviderBase.java:1041)
at com.android.server.enterprise.storage.EdmStorageProvider.getBoolean(EdmStorageProvider.java:249)
at com.samsung.android.knox.custom.KnoxCustomManagerService.getProKioskState(KnoxCustomManagerService.java:2070)
at com.samsung.android.knox.custom.ProKioskManager.getProKioskState(ProKioskManager.java:463)
at com.android.server.pm.PackageManagerService.chooseBestActivity(PackageManagerService.java:11862)
at com.android.server.pm.PackageManagerService.resolveIntentInternal(PackageManagerService.java:11734)
at com.android.server.pm.PackageManagerService.access$12900(PackageManagerService.java:663)
at com.android.server.pm.PackageManagerService$PackageManagerInternalImpl.resolveIntent(PackageManagerService.java:33709)
at com.android.server.wm.ActivityTaskSupervisor.resolveIntent(ActivityTaskSupervisor.java:819)
at com.android.server.wm.ActivityStarter$Request.resolveActivity(ActivityStarter.java:620)
at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:760)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1873)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1744)
at com.android.server.wm.ActivityTaskManagerService.startActivity(ActivityTaskManagerService.java:1697)
at android.app.IActivityTaskManager$Stub.onTransact(IActivityTaskManager.java:1132)
at com.android.server.wm.ActivityTaskManagerService.onTransact(ActivityTaskManagerService.java:6223)
at android.os.Binder.execTransactInternal(Binder.java:1215)
at android.os.Binder.execTransact(Binder.java:1179)

对应的Binder调用堆栈如下:

at android.os.StrictMode.readAndHandleBinderCallViolations(StrictMode.java:2497)
at android.os.Parcel.readExceptionCode(Parcel.java:2382)
at android.os.Parcel.readException(Parcel.java:2343)
at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:2897)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1743)
at android.app.Activity.startActivityForResult(Activity.java:5473)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:728)
at android.app.Activity.startActivityForResult(Activity.java:5431)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:709)
at android.app.Activity.startActivity(Activity.java:5817)
at android.app.Activity.startActivity(Activity.java:5770)

我之前看到过类似的关于onCreate()回调触发该问题的讨论,但这次是startActivity()调用直接触发的,实在摸不着头绪。想请教下大家有没有遇到过类似情况,或者能帮我分析下背后的原因?

测试设备信息:

  • 三星M31
  • Android 12

备注:内容来源于stack exchange,提问作者Ashwin Srevatsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:02:59