Android activity 应用程序';是否调用s onCreate()方法?

Android activity 应用程序';是否调用s onCreate()方法?,android-activity,oncreate,application-lifecycle,android,Android Activity,Oncreate,Application Lifecycle,Android,在我的Android应用程序中,我有一个DefaultApplication类,它扩展了Android.app.application,在它的onCreate()中,我绑定了一些服务,这些服务将被我在这个应用程序中的其他活动使用 我还有一个BroadcastReceiver,它监听和接收C2DM消息。当此接收器在应用程序未运行时收到消息时,它将启动一个对话框,显示即将到来的消息,并启动我的应用程序的活动 我的问题是,当我在没有与DefaultApplication进行任何交互的情况下启动活动时,

在我的Android应用程序中,我有一个
DefaultApplication
类,它扩展了
Android.app.application
,在它的
onCreate()
中,我绑定了一些服务,这些服务将被我在这个应用程序中的其他活动使用

我还有一个
BroadcastReceiver
,它监听和接收C2DM消息。当此接收器在应用程序未运行时收到消息时,它将启动一个对话框,显示即将到来的消息,并启动我的应用程序的活动

我的问题是,当我在没有与
DefaultApplication
进行任何交互的情况下启动活动时,我的
DefaultApplication
onCreate()
是否会因为该应用程序的活动已启动而被调用

以下是我的
DefaultApplication
的定义和清单:

public class DefaultApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        doBindService();

    }

    void doBindService() {

        // Establish a connection with the service. We use an explicit
        // class name because we want a specific service implementation that
        // we know will be running in our own process (and thus won't be
        // supporting component replacement by other applications).

        bindService(new Intent(DefaultApplication.this, SocketService.class),
                socketServiceConnection, Context.BIND_AUTO_CREATE);

        mIsBound = true;
    }

    void doUnbindService() {
        if (mIsBound) {
            // Detach our existing connection.
            unbindService(socketServiceConnection);
            mIsBound = false;
        }
    }
}
清单如下所示:

<application android:icon="@drawable/icon" android:label="@string/app_name"
        android:name="com.mypackage.DefaultApplication"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:debuggable="true">
<service android:name="com.mypackage.services.SocketService"></service>
<activity android:name="TestActivity"
            android:screenOrientation="landscape"></activity>
</application>

当调用
onCreate
时,您可以找到正式答案

在应用程序启动时,在任何活动、服务之前调用, 或接收器对象(不包括内容提供商)已创建。 实现应该尽可能快(例如使用lazy 状态初始化)自此函数中花费的时间 直接影响开始第一项活动的绩效, 过程中的服务或接收者。如果重写此方法,请执行以下操作: 一定要调用super.onCreate()

只是第一次

当活动启动且应用程序未加载时,将调用两个
onCreate()
方法


但是对于后续的活动启动,将不会调用应用程序的
onCreate()

请注意,如果任何服务被定义为在其他进程中运行,例如使用
android:process=
,则该进程将再次调用应用程序的
onCreate()


例如,请看

是的,它可以这样工作,我还没有看到其他功能…我不明白为什么要扩展
应用程序
?您是否应该扩展
活动
?@LAS_VEGAS在我的DefaultApplication的其余部分中,我存储了一些数据并定义了一些在应用程序范围内使用的方法。我只是把它的一部分复制到这里,严格来说不是真的。