gpt4 book ai didi

Android:检查 Activity 是否被系统从服务中销毁

转载 作者:太空狗 更新时间:2023-10-29 16:33:24 27 4
gpt4 key购买 nike

我有一个服务监听来自服务器的一些事件。服务有 START_STICKY 标志,当它被操作系统杀死时,它会重新启动。当服务收到一个事件时,我有两种情况。首先,如果 Activity 没有被终止,我需要将结果发送到本地广播接收器并更新 UI。其次,如果它被操作系统杀死,我想重新创建它并 bundle 发送数据。

但我不知道如何识别 android 杀死了我的 Activity 。onDestroy Activity 事件不会在这种情况下出现。

    @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。那挺好的。它的sendBroadcast()方法返回一个 bool 值,指示是否找到已注册的接收器。您可以使用该结果来确定您的接收 Activity (MainActivity) 是否存在以及是否已注册接收广播。

当您的服务有事件要发送到 MainActivity 时,首先尝试使用 sendBroadcast() 发送事件。如果它返回真,你就完成了。如果它返回 false,则该 Activity 未注册,必须使用 startActivity() 创建,事件作为额外传递,如您发布的代码所示。

关于Android:检查 Activity 是否被系统从服务中销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34294812/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com