android-IntentService是否从BroadcastReceiver开始创建了Application类的实例?
作者:互联网
我正在编写一些代码,这些代码可以在设备/应用程序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类的自定义应用程序类.)
我认为从技术上讲,当我的应用程序在后台(或未运行)时可以调用此接收器-那么启动我的意图服务时会发生什么?是否假脱机整个应用程序并创建Application类的实例?
从IntentService内部调用Application类上的静态方法对我来说是否安全(甚至是个好主意)? (这些静态方法具有在Application.onCreate中初始化的返回对象)
解决方法:
当您的IntentService启动时,如果您的应用程序尚未运行,它将创建您的Application类的实例.如果您的应用程序仍然存在,您将能够按原样访问已修改的特定于应用程序的对象.但是,如果您的应用程序被终止,然后br启动服务,则会创建整个应用程序的新实例.静态方法不会提供您当时所需的值.我建议将数据保留在某处,而不依赖于应用程序生命周期.
标签:intentservice,instance,broadcastreceiver,android 来源: https://codeday.me/bug/20191101/1984243.html