如何在按下主页按钮时暂停服务并在程序恢复时恢复服务?
How to pause the service when the home button is pressed and resume the service when the program is resume?
public class BackgroundMusicService extends Service
{
int currentPos;
/** indicates how to behave if the service is killed */
int mStartMode;
/** interface for clients that bind */
IBinder mBinder;
/** indicates whether onRebind should be used */
boolean mAllowRebind;
MediaPlayer player;
@Override
public void onCreate() {
super.onCreate();
player = MediaPlayer.create(this, R.raw.tornado);
player.setLooping(true); // Set looping
player.setVolume(100,100);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
player.seekTo(currentPos);
player.start();
return 1;
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public boolean onUnbind(Intent intent) {
return mAllowRebind;
}
@Override
public void onRebind(Intent intent) {
}
public void onPause()
{
player.pause();
}
@Override
public void onDestroy() {
player.stop();
currentPos = player.getCurrentPosition();
}
}
这是播放背景音乐的服务,如何在按下home键时暂停服务,在程序恢复时恢复服务?这是我的 MainActivity:
public class MainActivity extends ActionBarActivity
{
int request_code = 1;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startService(new Intent(getBaseContext(), BackgroundMusicService.class));
}
@Override
protected void onDestroy()
{
super.onDestroy();
stopService(new Intent(getBaseContext(), BackgroundMusicService.class));
}
}
我认为需要使用onPause()
和onResume()
功能,但是如何使用呢?它应该在服务 class 或 activity class 中使用?
还有一点要考虑,我用的是multiple intent,要保证当我改成2nd或其他intent时,服务还是运行,意思是换intent不会停止播放后台音乐...除非按下主页按钮或退出程序(这个我已经完成了)。
您有自己的 onPause 和 onResume 方法。您通常不需要扩展应用程序 class,而是在您的 Activity 中使用它(尤其是如果您的应用程序只有一个 Activity)。
但是,为什么启动和停止服务?为什么不只是 pause/unpause 音乐?您可以向 pause/unpause 发送一个意图(甚至切换)音乐播放。
public class BackgroundMusicService extends Service
{
int currentPos;
/** indicates how to behave if the service is killed */
int mStartMode;
/** interface for clients that bind */
IBinder mBinder;
/** indicates whether onRebind should be used */
boolean mAllowRebind;
MediaPlayer player;
@Override
public void onCreate() {
super.onCreate();
player = MediaPlayer.create(this, R.raw.tornado);
player.setLooping(true); // Set looping
player.setVolume(100,100);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
player.seekTo(currentPos);
player.start();
return 1;
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public boolean onUnbind(Intent intent) {
return mAllowRebind;
}
@Override
public void onRebind(Intent intent) {
}
public void onPause()
{
player.pause();
}
@Override
public void onDestroy() {
player.stop();
currentPos = player.getCurrentPosition();
}
}
这是播放背景音乐的服务,如何在按下home键时暂停服务,在程序恢复时恢复服务?这是我的 MainActivity:
public class MainActivity extends ActionBarActivity
{
int request_code = 1;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startService(new Intent(getBaseContext(), BackgroundMusicService.class));
}
@Override
protected void onDestroy()
{
super.onDestroy();
stopService(new Intent(getBaseContext(), BackgroundMusicService.class));
}
}
我认为需要使用onPause()
和onResume()
功能,但是如何使用呢?它应该在服务 class 或 activity class 中使用?
还有一点要考虑,我用的是multiple intent,要保证当我改成2nd或其他intent时,服务还是运行,意思是换intent不会停止播放后台音乐...除非按下主页按钮或退出程序(这个我已经完成了)。
您有自己的 onPause 和 onResume 方法。您通常不需要扩展应用程序 class,而是在您的 Activity 中使用它(尤其是如果您的应用程序只有一个 Activity)。
但是,为什么启动和停止服务?为什么不只是 pause/unpause 音乐?您可以向 pause/unpause 发送一个意图(甚至切换)音乐播放。