スタックからの脱出
アイテムのコレクションをしているアクティビティがあって、一覧から選んでという繰り返しをしているとスタックが深くなって戻るボタンだとどうなるのことやら、という心配があったのだった。強引に処理を変えてしまうのはやはりスマートではないし(バックボタンはそのままにするのが礼儀というか)。
メインのアクティビティがあって、そこからコレクションする編集のアクティビティにいって、そこからリストされているアクティビティに移って選ぶとコレクションのところに戻って、そこにコレクションされていると。
A -> B -> C -> D -> C -> D -> C
というような繰り返しになって、いざ B から A に戻るというときにバックボタンおしても C に戻るだけという事態はあまり嬉しくない。ということなのだった。
で、いろいろ見ていたら、どうやらアクティビティのフラグを設定して起動すればよいらしいというのがわかった。
A -> B
の段階でまず別タスクとして B を起動する。
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
として起動。 C -> B のときに、
intent.setFlags(Intent.FLAG_ACTIVITY_PARENT_TOP);
とすることでそのタスクのトップにしてくれるらしい。あとはバックで A に戻れると。状況によっては違うかもしれないけれど、まあそんな感じでは動作している様子。
スタックの関係はなにやらいろいろあるらしくてよくはわからないが、ひとまず期待する動きはこれでできるようなのでよしとしたいところ。とはいえ十分テストしなくては。
追記:(10/22)
あとになって思うに、どうもこれでは不十分というかおかしな動作なのではないか、という感じもしてきた。実際何回か繰り返すとエラーになって落ちてしまうことが。やはりもう少し調べて考えないと駄目そうだ。
| 固定リンク
« クレーン&クレーン | トップページ | 字幕考 »
コメント