13

我正在创建一个带有背景音乐的游戏应用程序。我使用 Android Service 播放背景音乐,因为我想在更改活动时运行 BGM。我的问题是,我已经在每个活动的 onPause 方法中声明了完成()(我不想让用户返回并想要终止活动)。

所以当我打算进行其他活动时,它会调用 onDestroy 并停止服务。我想停止服务完全退出应用程序(按下主页按钮)并想通过 BGM 和完成()在 onPause()中完成活动。这可能吗?还是有其他解决方案?

public class BackgroundMusicService extends Service {
    private static final String TAG = null;
    MediaPlayer player;

    public IBinder onBind(Intent arg0) {

        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        player = MediaPlayer.create(this, R.raw.topbgm);
        player.setLooping(true); // Set looping
        player.setVolume(100, 100);
    }

    public int onStartCommand(Intent intent, int flags, int startId) {
        player.start();
        return 1;   
    }

    public void onStart(Intent intent, int startId) {
        // TO DO

    }

    public IBinder onUnBind(Intent arg0) {
        // TO DO Auto-generated method
        return null;
    }

    public void onStop() {

    }

    public void onPause() {

    }

    @Override
    public void onDestroy() {
        player.stop();
        player.release();
        Log.i("service", "service killed");
    }

    @Override
    public void onLowMemory() {

    }
}

在清单中

<service android:name=".BackgroundMusicService" android:process=":remote" />
4

3 回答 3

17

把这条线放在你的活动中

stopService(new Intent(this, BackgroundMusicService.class));

在按下主页按钮的 onDestroy() 方法中。

于 2013-02-13T05:08:51.287 回答
2

stopService(new Intent(this, BackgroundMusicService.class));

将此添加到您的主要活动中的onPause()方法和方法中。onDestroy()因为如果您按下Home按钮,应用程序将在后台随机运行一段时间,并且onDestroy()在您最小化应用程序后不会立即调用方法。最好的方法是将其放入onPause()方法中。onPause()当您的应用程序活动不是前台活动时调用方法。

于 2013-02-13T05:38:04.733 回答
0

覆盖Service中的onUnbind(Intent intenet)方法

于 2013-11-11T10:02:11.727 回答