« 【Tizen】sdbで配布されたアプリのパッケージファイル(.wgt)をインストールする | トップページ | 【google play公開アプリ】いつでもクイックランチャーのご紹介 »

2013年8月 2日 (金)

AndroidとiOSで、画面をバックグラウンドに移動させた時のタイマーの動きを比較してみた

最近、仕事でiPhoneのアプリを触ってます。

iOSの画面はViewController、Androidの画面はActivityという

クラスで作るのですが、タイマーを起動した状態でこれら画面を

バックグラウンドに移動した際の動きに違いがあったので、

忘れないようメモっておこうと思います。

比較した動作は、以下のとおりです。

タイマーを起動した状態で、以下の操作を実行

  • 画面上に別の画面を重ねる
  • 画面を終了させる
  • ホームキーを押下する

【iOSの場合】

●画面上に別の画面を重ねた場合

上に別のViewControllerを重ねても、タイマーは裏で動き続ける。

●画面を終了させた場合

画面を終了させても、タイマーは生存し続ける。

●ホームキーを押下する

タイマーによるメソッドコールが行われなくなる。

しかし、タイマーは死んだわけではなく、再びアプリを復帰させると、

タイマーのメソッドコールが再開される。

バックグラウンドにいる間に、タイマーに設定したインターバル時間が超過した場合は、

フォアグラウンドに復帰直後にメソッドコールが行われる。

【Androidの場合】

●画面上に別の画面を重ねた場合

すなわちonPause(), onStop()が呼ばれたとき。

上に別のViewControllerを重ねても、タイマーは裏で動き続ける。

これはiOSと同じ。

●画面を終了させた場合

onDestory()まで呼ばれたとき。

アクティビティが終了しても、タイマーは裏で動き続ける。

これもiOSと同じ。

●ホームキーを押下する

ホームキーを押下されたあとも、タイマーは動き続ける。

ここがiOSと違う。

まとめると・・・、

(1)  ホームキーを押下したときのタイマーの振る舞いが異なる。(※ここでハマった。やっぱり同じ感覚でソース書いたらだめですね・・・。)

(2)AndroidでonDestroy()が呼ばれたからといって、タイマーは破棄されない。というかonDestroy()後もアクティビティのメモリが残ってしまっているのでタイマー解除は忘れずに。

(3) iOSでも、画面を消去後もタイマーは破棄されない。破棄してあげないと、やはりメモリは解消されないので要注意。

« 【Tizen】sdbで配布されたアプリのパッケージファイル(.wgt)をインストールする | トップページ | 【google play公開アプリ】いつでもクイックランチャーのご紹介 »

Android」カテゴリの記事

iOS」カテゴリの記事

コメント

コメントを書く

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

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1882306/52703039

この記事へのトラックバック一覧です: AndroidとiOSで、画面をバックグラウンドに移動させた時のタイマーの動きを比較してみた:

« 【Tizen】sdbで配布されたアプリのパッケージファイル(.wgt)をインストールする | トップページ | 【google play公開アプリ】いつでもクイックランチャーのご紹介 »

購入


無料ブログはココログ