如何控制服务类中的onCompletion()方法

时间:2013-09-15 11:00:31

标签: android android-mediaplayer

我有一个Service n UI类,Service类具有mediaplayer n onCompletion方法,可以看到跟踪已完成的歌曲。
那么问题是我如何通过UI从服务类中通知UI有关歌曲的完成情况,以便根据现在要播放的新歌改变其详细信息?

1 个答案:

答案 0 :(得分: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或只是在活动中调用静态方法,只需确保使用post(),因为在不同的线程中修改视图会使应用程序崩溃。