我有一个服务从服务器收听一些事件.一个服务有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()
,作为额外传递的事件创建活动,如发布的代码所示.
这听起来像你正在使用LocalBroadcastManager
.非常好.它的sendBroadcast()方法返回一个布尔值,指示是否找到了注册的接收者.您可以使用该结果来确定您的接收活动(MainActivity)是否存在并已注册接收广播.
当您的服务有要发送到MainActivity的事件时,请首先尝试使用发送事件sendBroadcast()
.如果它返回true,那么你完成了.如果返回false,则不会注册活动,必须使用startActivity()
,作为额外传递的事件创建活动,如发布的代码所示.