Android:检查系统是否已从服务

时间:2015-12-15 16:45:37

标签: android service kill activity-lifecycle

我有服务从服务器收听一些事件。 服务具有START_STICKY标志,使其在被OS杀死时重新启动。 当服务收到一个事件我有两个场景。 首先,如果活动没有被杀死,我需要将结果发送到本地广播接收器并更新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);
    }

1 个答案:

答案 0 :(得分:5)

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

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