質問: アンドロイドでスマホアプリを作ってます。 1つのアプリ内にAとBの2つの画面があります。 最初はAの画面から始まります。 AとBの画面は画面内のボタンを押す事などで、相互に移動できます。 移動は、intentというのを使ってます。移動元の画面はfinishで終了してます。 今、アプリを終了した時にAの画面で終わったら、再開時Aの画面から Bの画面で終わったら再開時Bの画面から始まるようにしようとしてます。 考えてた方法としては、終了(pause)する時に、 SharedPreferencesなどを使ってどの画面で終了したかをキーとして保存し 再開(resume)する時にその画面に移動するという方法ですが、 ボタンでの画面移動の時もresumeが呼ばれるため、上手くいかないことに気づきました。 再開時に終了した画面から始めるにはどのようにするのが良い方法なのでしょうか。 まだかなり初心者です。よろしくお願いします。
回答: 一番分かりやすい構造は 新たにSTARTUPというアクティビティを作って そいつがresumeでSharedPreferencesを読んで AかBを起動して自分は終わるというものではないだろうか。 これだと、AとBは終了時にSharedPreferencesを書き、 STARTUPは起動時にSharedPreferencesを読む、 という単純な動作になる。 android.intent.category.LAUNCHERに応答するのはSTARTUPになるので、 アイコンやアクティビティ名はしっかり設定しておこう。 Androidは、戻るボタンはアクティブなアクティビティが終了するが、 ホームボタンはホームアプリを起動するまたはアクティブにする (つまりアクティブなアクティビティは終了せずに後ろに隠れるだけ) という動作になるためその違いも考慮に入れる必要があるかも知れない。