我有一个 Service n UI 类,Service 类有 mediaplayer n onCompletion 方法来查看已完成歌曲的跟踪。
那么问题是我如何从服务类通知 UI 歌曲的完成,以便它根据现在要播放的新歌曲更改其详细信息?
.
问问题
128 次
1 回答
1
通过自定义接口使用回调。然后将此接口提供给服务并在需要时调用它。
public interface CallOnComplete
{
public void updateUi();
}
然后,在您创建服务的活动中,提供此接口的一个实例来执行您想要的服务,并在媒体播放器完成时调用它。我不确定这是否会被视为在 UIThread 中运行,如果有任何问题,您始终可以使用 view.post() 来确保它确实如此。
//IF YOU HAVE TO UPDATE THE ACTIVITY'S VIEWS
private CallOnComplete callback = new CallOnComplete(){
public void updateUI()
{
viewToModify.post(new Runnable(){
public void run(){
//UPDATE VIEW
}
});
}
};
//ANYTHING ELSE
private CallOnComplete callback = new CallOnComplete(){
public void updateUI()
{
//UPDATE ANYTHING YOU HAVE TO UPDATE
}
};
然后在服务内部你可以调用
mCallback.updateUI();
或者您可以始终使用 Intents 或简单地在 Activity 中调用静态方法,只要确保使用 post(),因为在不同线程中修改视图会导致应用程序崩溃。
于 2013-09-15T11:23:42.880 回答