Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用后台服务播放音乐时,移动到其他活动时音乐停止_Java_Android_Android Activity_Service - Fatal编程技术网

Java 使用后台服务播放音乐时,移动到其他活动时音乐停止

Java 使用后台服务播放音乐时,移动到其他活动时音乐停止,java,android,android-activity,service,Java,Android,Android Activity,Service,我正在开发一个游戏,我使用服务在所有活动中播放音乐。 我想在我们按home键时停止播放音乐,当从一个活动切换到另一个活动时,它不应该停止播放音乐 public class backService extends Service { private MediaPlayer mp; @Override public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY; } @Over

我正在开发一个游戏,我使用服务在所有活动中播放音乐。 我想在我们按home键时停止播放音乐,当从一个活动切换到另一个活动时,它不应该停止播放音乐

public class backService extends Service {
private MediaPlayer mp;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return START_STICKY;
}

@Override
public void onDestroy() {
    super.onDestroy();
    mp.stop();
    mp.release();
}

@Override
public void onCreate() {
    super.onCreate();
    mp = MediaPlayer.create(this, R.raw.all);
    mp.setLooping(true);
    mp.start();
}

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}
    }
和我的主要活动文件

public class Home extends AppCompatActivity {
private AdView mAdView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    hide();
    setContentView(R.layout.activity_home);
    Intent i = new Intent(this, backService.class);
    adv();
}



@Override
protected void onResume(){
    super.onResume();
    Intent i = new Intent(this, backService.class);
    startService(i);
}

@Override
protected void onStop() {
    super.onStop();
    Intent i = new Intent(this, backService.class);
    stopService(i);
}

@Override
protected void onDestroy(){
    super.onDestroy();
    Intent i = new Intent(this, backService.class);
    stopService(i);
}
    }
当我按home键时如何停止音乐,当我们在其他活动之间切换时如何继续播放音乐
TIA

尝试在中停止服务

@Override
public void onPause()
{
    super.onPause();
    // Check if app is in foreground
    if(!isAppOnForeground(context))
    {
        stop music here 
     }
}
下面是检查应用程序是否位于前台的方法。只需在此处替换您的包,在此处替换您的包名称

请删除Activity中的stopServicei inside onStop方法,因为无论何时您将一个活动转到另一个活动,都会调用onStop方法,这就是您的服务正在终止的原因

如果您想在按下home(主页)按钮的同时暂停或停止音乐,则将ComponentCallbacks2界面实现为这样的活动

 @Override
public void onTrimMemory(final int level) {
    if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
        if(mService != null){
            mService.pauseMusic();
        }
    }
}

我尝试过,但当我转到另一个活动时,它仍然会停止。编辑了我的答案,请检查您的应用程序在测试它时的当前行为?使用基本活动并将其扩展到所有活动,这样您就可以初始化服务类一次,并停止使用按下“主页”按钮的Listener它工作了,当我回家时,音乐停止了,当我去参加其他活动时,音乐也不会停止,但有一个问题。按home键后,当我返回应用程序时,音乐不会恢复。你必须处理这个问题,即将你的服务绑定到活动并处理所有数据
 @Override
public void onTrimMemory(final int level) {
    if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
        if(mService != null){
            mService.pauseMusic();
        }
    }
}