finish() でActivity が終了しない

よくAndroid関連の書籍やサイトなどで『 finish() で Activi...

finish() でActivity が終了しない

mixiチェック

よくAndroid関連の書籍やサイトなどで
『 finish() で Activity を終了させる』
と書いてあるんですが、
ちょっと微妙な思い違いをしていたようで
めちゃめちゃハマってしまいました(=_=;)

finish() は、
『Activity を即時終了させる』
と思っていたんですが、
どうやらそうでないようです。

とあるアプリを開発していて
ある条件下で Activity を終了させたくて finish() を使っていたんです。

こんな感じ↓
前処理;
if (式) finish();
後処理;
そしたら、どうも finish() が効いていないようで
後処理の部分でエラーで落ちてしまう・・・。

試しに、 
Log.d("CHECK", "before finish()"); 
finish(); 
Log.d("CHECK", "after finish()"); 
としてLogCatを見てみたら 
09-19 23:29:37.263: DEBUG/CHECK(13016): before finish() 
09-19 23:29:37.273: DEBUG/CHECK(13016): after finish() 
としっかりスルーされてしまい 
「『after finish()』じゃねーよ!!ヾ(`Д´*)ノ」 
と一人ボケツッコミのようなことをしてしまいました


で、ひとりでは解決できなかったので
知恵者のみなさまにアドバイスを願ったところ
『finish() は Activity を即時終了するわけではない』
ということがわかりました。

finish() はどうやら
「終了してもいいよ」
という宣言だけであり、その場で即時終了されるわけではなく
任意のタイミングでAndroid OSに終了されるのだそうです。

つまり、人間からみたら即時終了しているように見えても
Androidからしたら、終了宣言をしたActivityを
OSが気づいたときに終了しているみたいです。

そこには人間にはわからない多少のタイムラグがあり
その間にもプログラムは進行するので、
後処理の部分にエラーなどがあると強制終了されてしまうみたいです。

finish() のあとには、余計な処理を入れないようにしたほうがいいです。


というわけで、先程のプログラムは
前処理;
if (!式) 後処理;
finish();
とすることで解決しました。



んー、いやしかし、
前処理;
if (式) finish();
後処理;
とやりたいときもあるだろうに・・・。

そんなときはどうすんだろ?

▽finish() でActivity が終了しない のキーワード

▽次の記事、前の記事

AdMaker の管理画面がパワーアップ! | CheckBox だけを右寄せにする方法

Android アプリ の 研究所 アンドロイド ナビ:新着記事

incorrect AVA format エラー(署名作成時) : 2012年2月25日
署名作成時に Keytool-error: java.io.IOExceptio...
アイデアがどんどん湧く! 9マスメモアプリ : 2011年11月13日
先日、2011年11月11日の11時11分。 この100年に一度の1ならび、 し...
Androidで電子書籍 : 2011年11月 5日
Androidアプリの開発者として また純粋にAndroidのファンとして 日夜...
Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE : 2011年11月 5日
Eclipse から実機にアプリをインストールするときに 下記のエラーが出ました...
iPhone4S へ iPhone3GS のデータが移行されない時の対処方法 : 2011年10月23日
iPhone4Sをやっと手に入れることができました。 購入したのは、64GB の...
たーかーのーつーめー : 2011年10月22日
「たーかーのーつーめー」 でおなじみの『鷹の爪団』。 その中で活躍する『吉田くん...
iPhone4S の新音声機能である Siri がすごいらしい : 2011年10月13日
iPhone4S のみで使える新機能である Siri がすごいと話題です。 ちな...
iPhone4S を買うなら SoftBank ? au ? : 2011年10月10日
ついに iPhone4S の予約が SoftBank と au から10/7(金...
画面サイズとVGAとかの対応表 : 2011年10月 7日
Andoridの端末には様々な画面サイズがあります。 それぞれの画面サイズに最適...
iPhone のように指にくっついてスライドするUI : 2011年10月 7日
iPhone では、画面に表示されている写真などを入れ替えるとき、指で左右にフリ...

▽finish() でActivity が終了しない にトラックバックする

finish() でActivity が終了しないのトラックバックURL:
http://chu3.xsrv.jp/mt5/mt-tb.cgi/247

今日のキーワード

当サイトのRSS

カテゴリー

Twitterボタン

アンドロイドナビについて / 記事投稿してみませんか? / イベント情報募集
Copyright (C) 2012 All Rights Reserved Android アプリ の 研究所 アンドロイド ナビ