1

私は3つのアクティビティを作成したアプリを開発しています

  • 主な活動
  • Second_Activity
  • CustomView_Activity

これらのアクティビティが呼び出されるプロセスは次のとおりです。

  • MainActivity は Second_Activtiy を呼び出し、Second_Activtiy の OnCreate で CustomView_Activity のオブジェクトを作成しました。
  • Main_Activity には、onClick が Second_activity OnCreate で Second_Activity を呼び出す LinearLayout にボタンがあり、画面をオンのままにし、ボタン レイアウトなどの他のものを宣言する必要があります。
  • CustomView_Activity では、canvas を作成し、onCanvas で Rectangle を描画しました。
  • Main_Activity の後に Second_Activity が呼び出され、電源ボタンを押すと OnPause が呼び出されると、アクティビティが呼び出されます

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

    電源ボタンを押すと、画面OnResume -> onCreate -> OnRestartが呼び出されます。

OnCreate を何度も呼び出すため、アクティビティがタスクを正しく実行していません。

どなたか助けてください??

4

2 に答える 2

2

向きが再び変わると、Oncreate が呼び出されます。そのため、初回以降、アクティビティが正しく実行されていません。

これを修正するには、アクティビティが宣言されているマニフェスト ファイルでこれを宣言します。

android:configChanges="keyboardHidden|orientation" 

Android 3.0 以降の場合

android:configChanges="orientation|screenSize|keyboardHidden"

アプリが横向きで電話がロックされている場合、アプリは縦向きに向きを変えるため、onCreate が再度呼び出されます。これを防ぐには、上記の行を追加します。

于 2012-11-26T05:55:17.000 に答える
1

必要なすべての状態を維持するタスク スタックに依存するべきではありません。代わりに、を使用onSaveInstanceState()してアクティビティの状態を保存し、各アクティビティがこの状態または渡されたインテントに基づいてアクションを実行するようにします。アクティビティ フローをこのように設計することで、アクティビティはシステムの意志で (通常はメモリの必要性に基づいて) 作成/破棄でき、アクティビティは中断したところから再開できます。

于 2012-09-26T18:34:20.390 に答える