当前位置:  开发笔记 > 前端 > 正文

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

如何解决《Android:检查系统是否从服务中销毁活动》经验,为你挑选了1个好方法。

我有一个服务从服务器收听一些事件.一个服务有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);
    }

Bob Snyder.. 5

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

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



1> Bob Snyder..:

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

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

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有