当应用程序在后台/关闭时如何更新活动UI

时间:2019-07-04 03:37:09

标签: java android service broadcastreceiver

我有一个控制媒体播放器对象的服务,当我关闭我的应用程序时,仍然会显示一条通知来控制播放。

现在,当完成一首歌曲播放后,我想在活动中更新UI,并使用broadcastreceiver进行此操作,但这仅在我的应用可见且不在后台/关闭时可用。 (onPause中未注册的广播接收器)

但是当我的应用程序不可见并且用户再次打开我的应用程序时,我如何继续监听这些事件?它具有更新的UI(新歌曲)。

服务

@Override
public void onCompletion(MediaPlayer mp) {
    Log.d(TAG, "OnCompletion called!");

    Intent broadCastReceiverIntentUpdateSong = new Intent(Constants.ACTIONS.BROADCAST_UPDATE_SONG);
    sendBroadcast(broadCastReceiverIntentUpdateSong);

}

1 个答案:

答案 0 :(得分:0)

应用启动时,应向Service询问播放器的当前状态,并显示该状态。

在应用程序运行且处于前台的同时,它可以侦听广播事件并相应地更新UI(或其内部状态)。

当您的应用程序进入后台时,无需执行任何操作。当再次回到前台(在onResume()中)时,它可以再次向Service询问玩家的当前状态。

您可以将Activity绑定到Service并使用AIDL来获取当前状态,也可以只用包含动作或包含内容的startService()来调用Intent表示您想知道当前状态的EXTRA,Service可以通过发送包含Intent可以收听的当前状态的广播Activity来实现这一目的。 / p>