如何在应用程序处于 background/closed 时更新 activity UI
How to update activity UI when app is in background/closed
我有一个控制我的媒体播放器对象的服务,当我关闭我的应用程序时,仍然会显示一条通知来控制播放。
现在,当一首歌曲播放完毕后,我想更新 activity 中的 UI 并且我使用广播接收器进行了此操作,但这仅在我的应用程序可见且不在 background/closed。 (onPause 中未注册的广播接收器)
但是当我的应用程序不可见并且当用户再次打开我的应用程序时它有更新的UI(新歌),我如何继续监听这些事件。
服务
@Override
public void onCompletion(MediaPlayer mp) {
Log.d(TAG, "OnCompletion called!");
Intent broadCastReceiverIntentUpdateSong = new Intent(Constants.ACTIONS.BROADCAST_UPDATE_SONG);
sendBroadcast(broadCastReceiverIntentUpdateSong);
}
当您的应用程序启动时,它应该询问 Service
播放器的当前状态并显示。
当应用 运行 并在前台时,它可以侦听广播事件并相应地更新 UI(或其自身的内部状态)。
当您的应用进入后台时,它不需要执行任何操作。当它再次出现在前台时(在 onResume()
中),它可以再次询问 Service
播放器的当前状态。
您可以将 Activity
绑定到 Service
并使用 AIDL 获取当前状态,或者您可以使用包含表明您想知道当前状态的 ACTION 或 EXTRA,Service
可以通过发送包含当前状态的广播 Intent
来响应,您的 Activity
可以收听.
我有一个控制我的媒体播放器对象的服务,当我关闭我的应用程序时,仍然会显示一条通知来控制播放。
现在,当一首歌曲播放完毕后,我想更新 activity 中的 UI 并且我使用广播接收器进行了此操作,但这仅在我的应用程序可见且不在 background/closed。 (onPause 中未注册的广播接收器)
但是当我的应用程序不可见并且当用户再次打开我的应用程序时它有更新的UI(新歌),我如何继续监听这些事件。
服务
@Override
public void onCompletion(MediaPlayer mp) {
Log.d(TAG, "OnCompletion called!");
Intent broadCastReceiverIntentUpdateSong = new Intent(Constants.ACTIONS.BROADCAST_UPDATE_SONG);
sendBroadcast(broadCastReceiverIntentUpdateSong);
}
当您的应用程序启动时,它应该询问 Service
播放器的当前状态并显示。
当应用 运行 并在前台时,它可以侦听广播事件并相应地更新 UI(或其自身的内部状态)。
当您的应用进入后台时,它不需要执行任何操作。当它再次出现在前台时(在 onResume()
中),它可以再次询问 Service
播放器的当前状态。
您可以将 Activity
绑定到 Service
并使用 AIDL 获取当前状态,或者您可以使用包含表明您想知道当前状态的 ACTION 或 EXTRA,Service
可以通过发送包含当前状态的广播 Intent
来响应,您的 Activity
可以收听.