【发布时间】:2011-12-02 22:37:46
【问题描述】:
在我的 Android 应用程序中,我有一个扩展 android.app.Application 的 DefaultApplication 类,在它的 onCreate() 中我绑定了一些服务,这些服务将被我在这个应用程序中的其他活动使用。
我还有一个BroadcastReceiver,它监听和接收 C2DM 消息。当此接收器在应用程序未运行时收到消息时,它将触发一个对话框,显示即将到来的消息,并将启动我的应用程序的 Activity。
我的问题是,当我在没有与DefaultApplication 进行任何交互的情况下启动一个活动时,我的DefaultApplication 的onCreate() 会因为该应用程序的一个活动已经启动而被调用吗?
这里是我的DefaultApplication的定义和Manifest:
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>
【问题讨论】:
-
是的,这行得通,我还没有看到其他...
-
我不明白你为什么要扩展
Application?你不应该扩展Activity吗? -
@LAS_VEGAS 在我的 DefaultApplication 的其余部分中,我存储了一些数据并定义了一些在应用程序范围内使用的方法。我只复制了一部分到这里。
标签: android-activity oncreate application-lifecycle android