Skip to content

DiskReadViolation in Firebase Performance during Activity#onResume #7340

@arkivanov

Description

@arkivanov
  • Android Studio version: Build #IU-252.23892.409, built on August 1, 2025
  • Firebase Component: Performance
  • Component version: Firebase BOM 33.16.0

[REQUIRED] Step 3: Describe the problem

AppStartTrace produces strict mode DiskReadViolation through RemoteConfigComponent.

Steps to reproduce:

We observe the following error in our app:

13:27:55.677 D StrictMode policy violation; ~duration=27 ms: android.os.strictmode.DiskReadViolation	at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1666)	at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:275)	at android.app.SharedPreferencesImpl.getLong(SharedPreferencesImpl.java:328)	at com.google.firebase.remoteconfig.internal.ConfigSharedPrefsClient.getFetchTimeoutInSeconds(ConfigSharedPrefsClient.java:110)	at com.google.firebase.remoteconfig.RemoteConfigComponent.getFrcBackendApiClient(RemoteConfigComponent.java:264)	at com.google.firebase.remoteconfig.RemoteConfigComponent.getFetchHandler(RemoteConfigComponent.java:280)	at com.google.firebase.remoteconfig.RemoteConfigComponent.get(RemoteConfigComponent.java:190)	at com.google.firebase.perf.config.RemoteConfigManager.isFirebaseRemoteConfigAvailable(RemoteConfigManager.java:401)	at com.google.firebase.perf.config.RemoteConfigManager.triggerRemoteConfigFetchIfNecessary(RemoteConfigManager.java:337)	at com.google.firebase.perf.config.RemoteConfigManager.getRemoteConfigValue(RemoteConfigManager.java:301)	at com.google.firebase.perf.config.RemoteConfigManager.getBoolean(RemoteConfigManager.java:213)	at com.google.firebase.perf.config.ConfigResolver.getRemoteConfigBoolean(ConfigResolver.java:880)	at com.google.firebase.perf.config.ConfigResolver.getIsExperimentTTIDEnabled(ConfigResolver.java:839)	at com.google.firebase.perf.metrics.AppStartTrace.onActivityResumed(AppStartTrace.java:355)	at android.app.Application.dispatchActivityResumed(Application.java:431)	at android.app.Activity.dispatchActivityResumed(Activity.java:1483)	at android.app.Activity.onResume(Activity.java:2065)	at androidx.fragment.app.FragmentActivity.onResume(FragmentActivity.java:309)	at com.example.MainActivity.onResume(GrokActivity.kt:220)	at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1603)	at android.app.Activity.performResume(Activity.java:8743)	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4952)	at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4995)	at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:57)	at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)	at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:180)	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:98)	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)	at android.os.Handler.dispatchMessage(Handler.java:106)	at android.os.Looper.loopOnce(Looper.java:205)	at android.os.Looper.loop(Looper.java:294)	at android.app.ActivityThread.main(ActivityThread.java:8177)	at java.lang.reflect.Method.invoke(Native Method)	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) 

Relevant Code:

In your Application class add the following code:

import android.app.Application import android.os.StrictMode class MyApp : Application() { override fun onCreate() { StrictMode.setThreadPolicy( StrictMode.ThreadPolicy.Builder() .detectAll() .penaltyLog() .penaltyDeath() .build(), ) StrictMode.setVmPolicy( StrictMode.VmPolicy.Builder() .detectAll() .penaltyLog() .penaltyDeath() .build() ) super.onCreate() } }

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions