Android:检查系统是否从服务中销毁活动

Sos*_*aev 2 service android kill activity-lifecycle

我有一个服务从服务器收听一些事件.一个服务有START_STICKY标志,当他被操作系统杀死时,它会重新启动.当服务收到一个事件我有两个场景.首先,如果活动没有被杀死,我需要将结果发送到本地广播接收器并更新UI.其次,如果它被OS杀死我想重新创建它并以捆绑方式发送数据.

但我不知道如何识别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);
    }
Run Code Online (Sandbox Code Playgroud)

Bob*_*der 5

这听起来像你正在使用LocalBroadcastManager.非常好.它的sendBroadcast()方法返回一个布尔值,指示是否找到了注册的接收者.您可以使用该结果来确定您的接收活动(MainActivity)是否存在并已注册接收广播.

当您的服务有要发送到MainActivity的事件时,请首先尝试使用发送事件sendBroadcast().如果它返回true,那么你完成了.如果返回false,则不会注册活动,必须使用startActivity(),作为额外传递的事件创建活动,如发布的代码所示.