2016-10-10 135 views
0

我有以下活动的应用程序:活动不破坏完全

A->B->C 

C我使用下面的代码时,我的web服务返回true发挥循环MP3文件(我们会定期检查):

void PlayBeepLoop() 
{ 

    try { 
     if(player.isPlaying()) 
      return; 

     AssetFileDescriptor descriptor = getAssets().openFd("beep.mp3"); 
     player.reset(); 
     player.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength()); 
     descriptor.close(); 

     player.prepare(); 
     player.setVolume(1f, 1f); 
     player.setLooping(true); 
     player.start(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

的问题是,如果我从C->B去逼人退,我相信循环在后台继续运行,当它返回true它会发出蜂鸣声。

C代码也不起作用:

public void onBackPressed() { 
    super.onBackPressed(); 
    finish(); 
} 

请帮助 PS:我需要提示音按下后退按钮时,仅停止。应用程序仍在显示时按下主屏幕按钮C应允许在应用程序处于后台时发出嘟嘟声。

+0

尝试停止循环以某种方式调用'完成()之前;'。 – Fusseldieb

+0

如果整个活动都没有了,为什么媒体播放器仍然活着? –

+0

看看:http://stackoverflow.com/questions/4924071/calling-finish-on-an-android-activity-doesnt-actually-finish – Fusseldieb

回答

0

删除super.onBackPressed()并在onBackPressed()方法上面添加@Override。

0

与其说

finish(); 

使用

player.stop(); 
finish();