我有一个在激活警报时激活的服务。它扩展了IntentService,并且在那个服务中我需要发送消息给MainActivity。 MainActivity在接收到此消息后执行一些必要的工作。我将消息发送到MainActivity使用:当MainActivity关闭时使用LocalBroadcastManager的Android
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
如果MainActivity当前处于活动状态(显示),则可以正常工作。然而,如果在MainActivity当前不活动状态,我创建它用:
PendingIntent mPendingIntent = PendingIntent.getActivity(this, 0,
new Intent(this, MainActivity.class), PendingIntent.FLAG_ONE_SHOT);
mPendingIntent.send(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
如果在MainActivity当前是活动(显示),然后该消息到达它。但是,当我必须使用PendingIntent重新创建MainActivity时,通过LocalBroadcastManager发送的消息不会到达MainActivity。如果我为例如睡觉。 2000ms,在发送消息之前(必须重新创建MainActivity),消息会到达MainActivity。
虽然这可能是可以理解的,但我宁愿使用确保应用程序正常工作的故障安全方式。
为了保证MainActivity已收到消息,是否需要将MainActivity中的消息发送到服务以验证消息是否已被接收?
有没有更好的方法来处理这个问题?