根据https://firebase.google.com/docs/crash/android#known-issues中的说明,
崩溃报告创建一个单独的后台进程来上传崩溃信息。如果您的应用扩展了 Android Application 类,则必须确保它是多进程安全的
我们需要注意的项目是
数据库、文件系统、共享首选项等
我从我的应用程序中读取了共享首选项。如何确保它是多进程安全的?
根据https://firebase.google.com/docs/crash/android#known-issues中的说明,
崩溃报告创建一个单独的后台进程来上传崩溃信息。如果您的应用扩展了 Android Application 类,则必须确保它是多进程安全的
我们需要注意的项目是
数据库、文件系统、共享首选项等
我从我的应用程序中读取了共享首选项。如何确保它是多进程安全的?
你可能需要改变你的方法。不幸的是,正如 Android API 中所述,SharedPreferences 在多个进程中使用并不安全:
注意:此类不支持跨多个进程使用。
Firebase 崩溃报告目前为您的应用添加了第二个进程;Application.onCreate()
每个进程调用一次,因此共享首选项将被多个进程访问,这可能会导致问题。
您的替代方法是将SharedPreferences
逻辑移出 Application 类,或者等待集成崩溃报告,直到 Firebase 更改其设计以不使用第二个进程 - 他们正在积极处理它,并将在离开 Beta 之前对其进行更改。
如果您决定移动SharedPreferences
逻辑,一种方法可以是将其移动到 aContentProvider
中,因为它们仅在单个进程中运行, before Application.onCreate()
。我在另一篇 StackOverflow 帖子中分享了这种设计的示例。