Android: 初始化时同一个应用的两个 Aplication class 实例

Android: two Aplication class instances for the same app when doing initialization

我们将Android应用程序的所有初始化都放在了MyApplication.onCreate()中。我们希望在应用程序加载到内存时只执行一次。

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        Log.i(TAG,"onCreate -----------------------------------------");
        init();
    }

然而在测试过程中我发现 Application onCreate() 被调用了两次。 (第二次可能来自我不太了解的服务)虽然 documentation says

public void onCreate () Added in API level 1

Called when the application is starting, before any activity, service, or receiver objects (excluding content providers) have been created.

是不是同时为Activity和Service创建了Application?

我可能遗漏了什么?

您的 activity 和服务可能 运行 在不同的进程中(检查清单文件中 activity 和服务的 android:process 属性)。

Android 每个应用进程创建一个 Application 上下文实例。