1

他们从Firebase 文档中说:

多进程

崩溃报告创建一个单独的后台进程来上传崩溃信息。如果您的应用扩展了 Android Application 类,则必须确保它是多进程安全的。否则,可能会导致并发问题。当应用程序扩展应用程序对象时,该对象会为多进程应用程序中的每个进程实例化。需要注意的两个重要事项是:

如果此对象的实现访问任何进程外状态(数据库、文件系统、共享首选项等),或执行对多进程环境不安全的其他操作,则可能会出现并发问题。这是因为 Application 对象的多个实例可能同时运行。许多第三方库保持进程外状态(例如在本地数据库中),并且如果它们是从 Application 对象初始化的,它们也会受到相同的并发问题的影响。如果您的应用符合上述描述并且您计划在您的应用中使用崩溃报告,我们强烈建议您考虑将应用程序逻辑移至内容提供程序或 Android 活动。任何对多进程环境不安全的应用程序逻辑都可能对您的应用程序产生意想不到的影响。

我如何从我的Application 班级检查内部是否有另一个实例Application onCreate以避免与Fabric其他人或其他人发生崩溃?

4

1 回答 1

4

一般来说,您不会“检查”是否有来自另一个进程的另一个 Application 对象。您只需假设始终为应用程序中的每个进程创建一个 Application 对象,并确保与其他进程中的其他 Applications 对象一起运行是安全的。只是不要从应用程序访问任何共享的读/写资源,你会没事的。

如果您必须仅从主进程初始化某些内容,则更可靠的方法是创建一个 ContentProvider(在您的清单中声明并像任何其他组件一样为其创建一个对象),并使用其 onCreate()。ContentProviders 仅从主进程创建和初始化 - 从不从其他进程创建和初始化。这样,您可以确保您的 init 不会在任何其他进程中重复。

或者,如果您根本不想处理这个问题,请等到崩溃报告从 beta 版到完整版本,因为它在未来不会使用额外的过程。我们(谷歌)不能确切地说什么时候会发布,但我们不会浪费任何时间来发布完整版本。

于 2016-07-18T02:35:48.173 回答