Android:如何检查Activity的onResume()中的服务状态?

时间:2012-08-21 17:51:43

标签: android android-service aidl

我正在创建一个媒体播放器应用。

当我启动或恢复应用程序时,我想检查媒体播放器是否已播放歌曲。

如果是,我会将暂停/播放ToggleButton设置为暂停,否则之前没有播放,则按钮将设置为播放

(例如,如果用户已经在使用媒体播放器并通过按下主页或后退按钮离开应用程序&现在他恢复播放器。则应正确配置按钮。)

实际的MediaPlayer对象在Service&所有通信都是通过AIDL interface方法完成的。

我打算实施一种方法:

public boolean isMediaPlaying() throws RemoteException {
    if (mediaPlayer != null) {
        if (mediaPlayer.isPlaying()) {
        return true;
    }
    return false;
}

问题:但是ServiceConnection's onServiceConnected在恢复后执行。

请建议我如何在活动简历中查看此状态?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以在Application类中保留对您的服务的引用。例如

    public class App extends Application {

    private static PlayerService player;

    @Override
    public void onCreate() {
        super.onCreate();

        if (player == null)
            bindService(new Intent(App.this, PlayerService.class), connection, Context.BIND_AUTO_CREATE);

    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        player.stop();
        player = null;
        getApplicationContext().unbindService(connection);
    }

    public static PlayerService getPlayer() {
        return player;
    }


    private ServiceConnection connection = new ServiceConnection() {
        public void onServiceConnected(ComponentName className, IBinder service) {
            player = ((PlayerService.PlayerServiceListener) service).getService();
        }

        public void onServiceDisconnected(ComponentName className) {
            player = null;
        }
    };

}

然后在活动onResume上使用

App.getPlayer().isPlaying