2014-02-22 43 views
36

我得到一個4.4.2設備此異常。在Android 4.3或更低版本上不可重現。的是Android 4.4.2 - 了java.lang.RuntimeException:活動的執行停止未恢復

設置爲我有一個家庭活動(支持ActionBarActivity子類)。家庭活動檢查一個布爾標誌,如果爲true,則啓動一個啓動畫面活動(是的,理想情況是在家庭活動之前出現閃屏,但讓我們假設我現在不能改變它的工作方式)。

閃屏與startActivityForResult推出,它從服務器下載一些配置選項,然後完成並返回結果回到主場活動。

奇怪的是這工作正常的4.3及以下,但在4.4設備,我得到了上面的異常(完整的堆棧跟蹤):

02-21 13:36:16.733 24409-24409/test.player E/ActivityThread﹕ Performing stop of activity that is not resumed: {test.player/test.ui.actvities.HomeActivity} 
    java.lang.RuntimeException: Performing stop of activity that is not resumed: {test.player/test.ui.actvities.HomeActivity} 
      at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3147) 
      at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3234) 
      at android.app.ActivityThread.access$1100(ActivityThread.java:135) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1223) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5017) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
      at dalvik.system.NativeStart.main(Native Method) 

基於上述,它看起來像的onStop(因爲我在onCreate上啓動splash活動)在homeResult的onResume之前調用。

這是爲什麼現在引起4.4.x到的問題?

+0

是關於「設置/開發者選項/不保留活動」的選擇?該選項是在4.4.2設備上選擇的,而未在其他設備上選擇? – Devrim

+0

不是,該選項在兩個設備上都未啓用。 – user3072558

+0

下載後,你的飛濺活動完成嗎?你如何回到'HomeActivity'?什麼是飛濺活動,它是一個對話框? – mangusta

回答

20

這對我來說不太合適。現在,啓動活動將成爲堆棧中的頂級活動,因此HomeActivity onStop生命週期方法將最終被調用。巧合的是,我在HomeActivity移動從onCreatestartActivity呼籲飛濺活動onResume,並錯誤消失。

+1

在我的情況下,仍然問題是onResume,如果我開始另一項活動。我必須做的是延遲onResume約1000毫秒的活動開始。是否有更好的辦法? – sheetal

10

這個問題仍然會出現在4.4.2及以上版本的所有HighEnd手機上,包括NEXUS 5,Samsumg s4,因爲onResume被調用,但仍然在動畫階段。所以如果你嘗試在onResume中啓動一個活動的問題將複製。

將您的切換活動置於處理程序延遲方法中。

Handler handler = new Handler(new Handler.Callback() { 
    @Override 
    public boolean handleMessage(Message msg) { 
     switch (msg.what) { 
      case 1: 
       //Strat another Activity Here 

      default: 
       break; 
     } 
     return false; 
    } 
}); 

並在onResume調用此。

handler.sendEmptyMessageDelayed(1, 1000); 

到那個時候,你可以顯示加載器,要麼就是阻止用戶交互

4

推出新的活動之前就調用的onResume超級方法:

super.onResume(); 
+0

如果我沒有實現onResume()方法會怎樣? –

+1

然後,您自動繼承super.onResume()作爲onResume()自動 – nadavge

3

我即使得到這個例外使用onResume(),所以我最終覆蓋了onPostResume()並從那裏開始活動,並且異常消失。不知道這是一個理想的解決方案,但仍...

相關問題