簡體   English   中英

Android onPause()導致Activity崩潰

[英]Android onPause() causing Activity to crash

由於某種原因,當我完成指定的活動時,我的活動會崩潰。 當我只有onDestroy時,一切正常,除非我最小化應用程序(HOME按鈕),音樂仍會播放。

從我的收集中,我最終使用onDestroy()onResume()onPause()來操縱MediaPlayer ……但是由於某種原因,當活動結束時,一個Alert對話框指出Unforunately, ProgramX has stopped. 盡管如此,它仍應繼續執行下一個startActivity(intent)。

MediaPlayerAssets gls; // custom MediaPlayer Assets to fetch MediaPlayer objects
@Override 
protected void onPause()
{
    super.onPause();
    gls.glbgm.pause(); // my logCat demands that the error occurs here.
    resumeToPosition = gls.glbgm.getCurrentPosition();
}


@Override
protected void onRestart()
{
    super.onRestart();
    if(gls.glbgm != null && !gls.glbgm.isPlaying())
    {
        gls.glbgm.seekTo(resumeToPosition);
        gls.glbgm.start();
    }
}

@Override
protected void onDestroy() {
    super.onDestroy();
    gls.glbgm.release();
    gls.score.release();
    gls.loser.release();
}

  • E / AndroidRuntime(23422):致命異常:主
  • E / AndroidRuntime(23422):java.lang.RuntimeException:無法暫停活動{com.fenrirAB.request / getluckyPkg.GetLuckyGame}:java.lang.IllegalStateException
  • E / AndroidRuntime(23422):位於android.app.ActivityThread.performPauseActivity(ActivityThread.java:3112)
  • E / AndroidRuntime(23422):位於android.app.ActivityThread.performPauseActivity(ActivityThread.java:3067)
  • E / AndroidRuntime(23422):位於android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3045)
  • E / AndroidRuntime(23422):位於android.app.ActivityThread.access $ 900(ActivityThread.java:152)
  • E / AndroidRuntime(23422):位於android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1295)
  • E / AndroidRuntime(23422):位於android.os.Handler.dispatchMessage(Handler.java:99)
  • E / AndroidRuntime(23422):位於android.os.Looper.loop(Looper.java:137)
  • E / AndroidRuntime(23422):位於android.app.ActivityThread.main(ActivityThread.java:5299)
  • E / AndroidRuntime(23422):位於java.lang.reflect.Method.invokeNative(本機方法)
  • E / AndroidRuntime(23422):位於java.lang.reflect.Method.invoke(Method.java:511)
  • E / AndroidRuntime(23422):位於com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)
  • E / AndroidRuntime(23422):位於com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
  • E / AndroidRuntime(23422):位於dalvik.system.NativeStart.main(本機方法)
  • E / AndroidRuntime(23422):由以下原因引起:java.lang.IllegalStateException
  • E / AndroidRuntime(23422):位於android.media.MediaPlayer._pause(本機方法)
  • E / AndroidRuntime(23422):位於android.media.MediaPlayer.pause(MediaPlayer.java:1372)
  • E / AndroidRuntime(23422):位於getluckyPkg.GetLuckyGame.onPause(GetLuckyGame.java:357)
  • E / AndroidRuntime(23422):位於android.app.Activity.performPause(Activity.java:5447)
  • E / AndroidRuntime(23422):位於android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1243)
  • E / AndroidRuntime(23422):位於android.app.ActivityThread.performPauseActivity(ActivityThread.java:3098)
  • E / AndroidRuntime(23422):...還有12個

  • 如果尚未啟動MediaPlayer則無法暫停它( 狀態圖 ),這就是為什么您收到java.lang.IllegalStateException的原因

    關於該錯誤,logcat怎么說? 您僅提及發生的線路錯誤。

    您是否嘗試過:

    @Override 
    protected void onPause()
    {
        super.onPause();
        if(gls.glbgm != null && gls.glbgm.isPlaying())
        {
            gls.glbgm.pause(); // my logCat demands that the error occurs here.
            resumeToPosition = gls.glbgm.getCurrentPosition();
        }
    }
    

    暫無
    暫無

    聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

     
    粵ICP備18138465號  © 2020-2024 STACKOOM.COM