3

我正在编写一些代码,当设备/应用程序 C2DM 注册令牌更改时,可以将一些设备持久数据迁移到网络服务器。

这最终由广播接收器(特别是接收器称为接收 Google C2DM 注册令牌的结果)启动

@Override
public void onRegistered(Context context, String registrationId) throws IOException {
    Log.d(TAG, "registrationId: " + registrationId);
    Intent selectIntent = new Intent(this, AlertMigrationService.class);
    this.startService(selectIntent);
}

(注意:我的应用程序使用了一个自定义应用程序类,它扩展了普通的应用程序类。)

我认为从技术上讲,当我的应用程序在后台(或未运行)时可以调用这个接收器 - 那么当我的意图服务启动时会发生什么?它是否会汇总我的整个应用程序并创建我的 Application 类的实例?

从 IntentService 内部调用 Application 类的静态方法对我来说是否安全(甚至是一个好主意)?(这些静态方法具有在 Application.onCreate 中初始化的返回对象)

4

1 回答 1

4

当您的 IntentService 启动时,如果您的应用程序尚未运行,它将创建的 Application 类的实例。如果您的应用程序处于活动状态,您将能够按原样访问已修改的应用程序特定对象。但是,如果您的应用程序被杀死,然后 br 启动服务,则会创建整个应用程序的新实例。静态方法不会给你当时想要的值。我建议将数据保存在某个地方并且不依赖于应用程序生命周期。

于 2012-03-27T19:36:53.930 回答