如何在停止播放声音时修复停止的应用程序?

时间:2013-06-25 11:40:29

标签: android eclipse android-manifest android-mediaplayer

  

我可以在锁定手机但旋转时停止播放声音   错误应用程序意外停止我使用

  <activity
        android:name="x"
        android:label="@string/app_name"
        android:configChanges="orientation|keyboardHidden|screenSize">
  

但旋转时屏幕为白色而没有任何数据。当我添加这行代码

android:screenOrientation="portrait"
  

效果不错但没有旋转   另一个问题,当我从移动设备点击返回时再次发生同样的错误

@Override 
protected void onResume() {

    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(Intent.ACTION_SCREEN_OFF);

    registerReceiver(listener, intentFilter);

    super.onResume();
}
@Override
protected void onPause() {
    IntentFilter intentFilter = new IntentFilter();
    super.onPause();
    wb.pause();
    unregisterReceiver(listener);
}
@Override
protected void onDestroy() {
    IntentFilter intentFilter = new IntentFilter();

    wb.release();
    unregisterReceiver(listener);
}

注意:wb是接口类WebAppInterface的实例

 public void pause( ) {

      mp.pause();
}
public void release( ) {
      mp.stop();
  mp.release();

}

  

06-25 14:38:51.507:I / Process(295):发送信号。 PID:295 SIG:9   06-25 14:38:57.507:D / dalvikvm(311):GC_FOR_MALLOC在145ms内释放了2068个对象/ 194376个字节   06-25 14:38:59.376:W / KeyCharacterMap(311):没有用于id 0的键盘   06-25 14:38:59.376:W / KeyCharacterMap(311):使用默认键映射:/system/usr/keychars/qwerty.kcm.bin   06-25 14:38:59.546:D / AndroidRuntime(311):关闭VM   06-25 14:38:59.546:W / dalvikvm(311):threadid = 1:线程退出未捕获异常(组= 0x4001d800)   06-25 14:38:59.576:E / AndroidRuntime(311):致命异常:主要   06-25 14:38:59.576:E / AndroidRuntime(311):java.lang.RuntimeException:无法暂停活动{com.ramadan / com.ramadan.Ramadan}:java.lang.NullPointerException   06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread.performPauseActivity(ActivityThread.java:3348)   06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread.performPauseActivity(ActivityThread.java:3305)   06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3288)   06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread.access $ 2500(ActivityThread.java:125)   06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2044)   06-25 14:38:59.576:E / AndroidRuntime(311):在android.os.Handler.dispatchMessage(Handler.java:99)   06-25 14:38:59.576:E / AndroidRuntime(311):在android.os.Looper.loop(Looper.java:123)   06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread.main(ActivityThread.java:4627)   06-25 14:38:59.576:E / AndroidRuntime(311):at java.lang.reflect.Method.invokeNative(Native Method)   06-25 14:38:59.576:E / AndroidRuntime(311):at java.lang.reflect.Method.invoke(Method.java:521)   06-25 14:38:59.576:E / AndroidRuntime(311):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)   06-25 14:38:59.576:E / AndroidRuntime(311):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)   06-25 14:38:59.576:E / AndroidRuntime(311):at dalvik.system.NativeStart.main(Native Method)   06-25 14:38:59.576:E / AndroidRuntime(311):引起:java.lang.NullPointerException   06-25 14:38:59.576:E / AndroidRuntime(311):at com.ramadan.Ramadan.onPause(Ramadan.java:125)   06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.Activity.performPause(Activity.java:3842)   06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1190)   06-25 14:38:59.576:E / AndroidRuntime(311):在android.app.ActivityThread.performPauseActivity(ActivityThread.java:3335)   06-25 14:38:59.576:E / AndroidRuntime(311):... 12更多   06-25 14:39:20.727:I / Process(311):发送信号。 PID:311 SIG:9

2 个答案:

答案 0 :(得分:0)

您需要mp.pasue()中的onPause以及mp.stop()上的mp.release()onDestroy

答案 1 :(得分:0)

最好的解决方案是在服务中播放音乐,它不会依赖于UI,你也应该在onDestroy方法中发布媒体播放器,它可能是null,你也可以检查它

public void pause( ) {

if(mp!=null)
      mp.pause();
}
public void release( ) {

if(mp!=null)
  mp.release();
}