我有一个控制媒体播放器对象的服务,当我关闭我的应用程序时,仍然会显示一条通知来控制播放。
现在,当完成一首歌曲播放后,我想在活动中更新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);
}
答案 0 :(得分:0)
应用启动时,应向Service
询问播放器的当前状态,并显示该状态。
在应用程序运行且处于前台的同时,它可以侦听广播事件并相应地更新UI(或其内部状态)。
当您的应用程序进入后台时,无需执行任何操作。当再次回到前台(在onResume()
中)时,它可以再次向Service
询问玩家的当前状态。
您可以将Activity
绑定到Service
并使用AIDL来获取当前状态,也可以只用包含动作或包含内容的startService()
来调用Intent
表示您想知道当前状态的EXTRA,Service
可以通过发送包含Intent
可以收听的当前状态的广播Activity
来实现这一目的。 / p>