我有一项服务监听来自服务器的一些事件。
服务有 START_STICKY 标志,当它被操作系统杀死时,该标志使他重新启动。
当服务收到事件时,我有两种情况。
首先,如果活动没有被终止,我需要将结果发送到本地广播接收器并更新 UI。
其次,如果它被操作系统杀死,我想重新创建它并捆绑发送数据。
但我不知道如何识别 Android 杀死了我的活动。
onDestroy 活动事件不会出现在这种情况下。
@Override
public void onComplete(CurrentOrdersResponse response) {
if (response == null) {
return;
}
boolean isActivityDestroyed = mPreferences.getBoolean(MainActivity.IS_MAIN_ACTIVITY_DESTROYED_PREF_KEY, false);
if (!isActivityDestroyed)
sendResult(response.getResJSONStr(), CURRENT_ORDERS_ACTION);
else {
Intent intent = new Intent(this, MainActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtras(extras);
startActivity(intent);
}
int resCode = response.getResCode();
Log.i(LOG_TAG, "Service resCode" + " " + resCode);
}
听起来你正在使用LocalBroadcastManager
。那挺好的。它是发送广播()方法返回一个布尔值,指示是否找到注册的接收器。您可以使用该结果来确定您的接收活动 (MainActivity) 是否存在并且已注册接收广播。
当您的服务有一个事件要发送到 MainActivity 时,首先尝试使用sendBroadcast()
。如果返回 true,则完成。如果返回 false,则该活动未注册,必须使用以下命令创建startActivity()
,该事件作为额外的内容传递,如您发布的代码所示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)