2016-10-01 107 views
0

我有一个在激活警报时激活的服务。它扩展了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中的消息发送到服务以验证消息是否已被接收?

有没有更好的方法来处理这个问题?

回答

0

有没有更好的方法来处理这个问题?

当活动已存在时,仅使用LocalBroadcastManager。如果您必须开始活动,请将您在广播中发送的信息包含在Intent中用于开始活动的信息中。该活动然后可以在onCreate()中查找该信息并使用它;否则,它可以正常运行。

相关问题