« クレーン&クレーン | トップページ | 字幕考 »

スタックからの脱出

 アイテムのコレクションをしているアクティビティがあって、一覧から選んでという繰り返しをしているとスタックが深くなって戻るボタンだとどうなるのことやら、という心配があったのだった。強引に処理を変えてしまうのはやはりスマートではないし(バックボタンはそのままにするのが礼儀というか)。

 メインのアクティビティがあって、そこからコレクションする編集のアクティビティにいって、そこからリストされているアクティビティに移って選ぶとコレクションのところに戻って、そこにコレクションされていると。

 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)
 あとになって思うに、どうもこれでは不十分というかおかしな動作なのではないか、という感じもしてきた。実際何回か繰り返すとエラーになって落ちてしまうことが。やはりもう少し調べて考えないと駄目そうだ。

|

« クレーン&クレーン | トップページ | 字幕考 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: スタックからの脱出:

« クレーン&クレーン | トップページ | 字幕考 »