退出应用时Android停止服务

时间:2013-02-13 05:01:33

标签: java android

我正在创建一个带有背景音乐的游戏应用程序。我使用Android服务进行游戏 背景音乐,因为我想在改变活动时运行BGM。 我的问题是,我在每个活动的onPause方法中声明了finish()(我不想让用户返回&想要杀死活动)。

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

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" />

3 个答案:

答案 0 :(得分:16)

将此行放入您的活动

stopService(new Intent(this, BackgroundMusicService.class));
在按下主页按钮的onDestroy()方法中

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

在Service

中覆盖onUnbind(Intent intenet)方法