当前位置: 首页 > 面试题库 >

退出应用程序时Android停止服务

姜永贞
2023-03-14
问题内容

我正在使用背景音乐创建游戏应用程序。我使用Android
Service播放背景音乐是​​因为我想在更改活动时运行BGM。我的问题是,我在每个活动的onPause方法中都声明了finish()(我不想让用户返回并想杀死该活动)。

因此,当我打算进行其他活动时,它将调用onDestroy并停止该服务。我想停止该服务以完全退出应用程序(按下主页按钮),并想要通过onPause()中的BGM和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" />

问题答案:

将此行放在您的活动中

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

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



 类似资料:
  • 当用户使用后退按钮退出应用程序时,Android中的后台服务将停止运行。如果应用程序在前台或后台(点击HOME按钮),同样的服务工作得很好。 有3个案例: null MainActivity.java SimpleService

  • 我有一个应用程序,它在一个线程中使用getline()从标准输入中读取数据。我想从主线程关闭应用程序,而getline仍然阻止另一个线程。如何做到这一点? 我不想强迫用户必须按ctrl-Z来关闭stdin和应用程序。 null null null 显示问题的示例代码:

  • 我正在构建一个应用程序,即使应用程序在后台,也需要保持位置跟踪。基本上,我正在使用播放服务的GoogleApiClient和LocationServices。FusedLocationApi.request位置更新方法来调用IntentService。 下面的代码是我如何在活动的后台触发位置更新: 效果很好 但是,当用户(通过任务管理器)终止应用程序时,我想停止此IntentService(称为L

  • 我的问题改变了一点,请看看下面的EDIT 2 我正在学习如何在Android上使用服务和录音。 我想创建一个应用程序,除了启动服务什么也不做:在请求权限(,)后,应用程序只从调用。 然后,该服务将录制音频并将其传输到给定的IP地址。我从这个问题的答案中获得了对音频流服务器和客户端的灵感。到目前为止,我正在Android Studio Emulator上测试Android 6.0上的应用程序。 这是

  • 问题内容: 我有一个媒体播放器服务,可在整个应用程序的后台播放音乐,例如: 问题在于,当用户更改应用程序或进入手机主屏幕(应用程序在后台运行)时,音乐仍在播放。 我试图停止它和方法,但是当我更改活动时这会停止音乐,这是我不希望的(我希望音乐在用户浏览活动时继续播放)。 更新资料 我尝试了广播: 我加了 在音乐服务的onCreate和接收事件的方法中: 在应用程序类中,我这样做: 但是音乐不会恢复

  • 问题内容: 我有两个线程:主线程和从主线程生成的线程。 当主线程退出时,整个程序会终止吗? 问题答案: 没有。 当所有非守护程序线程完成时,Java程序终止。 该文档指出: Java虚拟机启动时,通常只有一个非守护程序线程(通常调用某些指定类的名为main的方法)。Java虚拟机将继续执行线程,直到发生以下任何一种情况: 类的方法已被调用,安全管理器已允许进行退出操作。 不是守护程序线程的所有线程