2012年2月1日水曜日

[Android]Activity#onStartは意外に呼ばれない?

ボタンの2度押し対策として、以下のような対策を先日実施しました。


  • Activity#startActivityをオーバライド。フラグがoffならstartActivityする

  • Activity#onStartで、フラグをクリア

大体のケースでうまく行ったのですが、時々フラグがoffにならず、はてなと思っていろいろなバリエーションを調べてみると、次のアクティビティに遷移してすぐにバックキー押下みたいな操作を行うと発生することがわかりました。そこまでたどり着くのにだいぶ時間を費やしたんですが、なんでフラグがoffにならないかわかりませんでした。

で、onStartにトレースを入れてみると、呼ばれていないことがあるのがわかりました。
えぇそれが、遷移してすぐにバックキーのときです。
そのため、onResumeにフラグoffを移したら思い通りに動作するようになりました。

そういえば、上に透明なアクティビティがあるときも同じような現象があった気がします。
これは、Activityが不可視状態に遷移することなく、元に戻ったタイミングである。と考えるとまぁ納得がいきますね。

0 件のコメント: