我正在创建一个带有背景音乐的游戏应用程序。我使用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" />
答案 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)方法