当我离开我的应用程序时如何停止 MediaPlayer,而不是当我移动到另一个 Activity 时(Android Studio)
Posted
技术标签:
【中文标题】当我离开我的应用程序时如何停止 MediaPlayer,而不是当我移动到另一个 Activity 时(Android Studio)【英文标题】:How can I stop MediaPlayer when I leave my application, but not when I move to another Activity (Android Studio) 【发布时间】:2020-05-21 10:20:49 【问题描述】:我正在尝试在 android studio 上制作一个游戏,即使您切换活动,背景音乐也会连续播放,但我希望音乐在用户离开应用程序时停止。我搜索了***,并尝试使用从下面的here 找到的解决方案:
public class BackgroundSoundService 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.idil);
player.setLooping(true); // Set looping
player.setVolume(100,100);
public int onStartCommand(Intent intent, int flags, int startId)
player.start();
return 1;
@Override
public void onDestroy()
player.stop();
player.release();
MediaPlayer 在所有活动中播放的声音问题是当我使用主页按钮离开应用程序或仅在我实际关闭帮助时锁定手机时声音不会停止。
如有任何帮助,我们将不胜感激。
【问题讨论】:
检查这些***.com/questions/6559636/… ***.com/questions/8209858/… 【参考方案1】:您可以使用进程生命周期来监听应用何时进入后台并停止它
-
在 build.gradle 中添加依赖项
implementation "androidx.lifecycle:lifecycle-process:2.2.0"
-
创建自定义Application,别忘了在AndroidManifest中声明
public class CustomApplication extends Application implements LifecycleObserver
@Override
public void onCreate()
super.onCreate();
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onAppBackgrounded()
// your app come to background
stopService(new Intent(this, BackgroundSoundService.class));
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onAppForegrounded()
// your app come to foreground
【讨论】:
以上是关于当我离开我的应用程序时如何停止 MediaPlayer,而不是当我移动到另一个 Activity 时(Android Studio)的主要内容,如果未能解决你的问题,请参考以下文章
如何在按下按钮时播放音频并在我的手指离开同一个按钮时立即停止?