2012-09-26 29 views
1

我開發一個應用程序在我所創建三個活動OnCreate中調用的onPause後在Android的

  • Main_Activity
  • Second_Activity
  • CustomView_Activity

下面是過程中,這些工作之外的活動所謂:

  • MainActivity調用Second_Activtiy並在Second_Activtiy的OnCreate中創建了CustomView_Activity的對象。
  • 在Main_Activity我有一個的LinearLayout一個按鈕的onClick調用Second_Activity在Second_activity OnCreate中我要保持我的屏幕上,並聲明其他像按鈕佈局等
  • 在CustomView_Activity我有創造的帆布和onCanvas我有平局一個矩形。
  • 現在,當我Second_Activity Main_Activity後調用,並呼籲在onPause上按下電源按鈕我的活動呼籲

    OnPause -> OnStop -> OnCreate -> OnResume -> OnRestart -> OnDestroy 
    

    ,當我按下電源按鈕在屏幕OnResume -> onCreate -> OnRestart電話上。

由於一次又一次地調用OnCreate,我的活動沒有正確執行任務。

請任何人都可以幫忙?

回答

2

當方向改變時再次調用Oncreate。這就是爲什麼你的活動在第一次後沒有正確運行。

爲了解決這個問題,你必須在活動聲明的清單文件中聲明這一點:

android:configChanges="keyboardHidden|orientation" 

爲Android 3.0及以上

android:configChanges="orientation|screenSize|keyboardHidden" 

當應用程序在景觀和手機鎖定,然後該應用重新定向到肖像,因此onCreate被再次調用。爲了防止這個添加上面的行。

+0

工作得很好。 –

1

你永遠不應該依靠你的任務堆棧來維護你需要的所有狀態。相反,使用onSaveInstanceState()保存您的活動狀態,並讓每個活動都基於這個狀態或傳遞給它的意圖。通過這種方式設計您的活動流程,系統可以根據自己的意願創建/銷燬活動(通常根據內存需求),並且您的活動可以從停止的地方繼續進行。

+0

謝謝Steve .. 但這種方法沒有在我的代碼中工作。但我通過在清單文件中聲明android:configChanges =「keyboardHidden | orientation」來解決我的問題。並且其工作正常.. :) – User42590

+0

請注意,onSaveInstanceState()在API Level 21+上可用。 –

相關問題