アプリをレジュームした時に処理を実行する

アプリをレジュームした時に処理を実行する

一度起動したアプリを閉じて、再度開いた時(レジュームした時)にTi.Appのresumeというイベントが発火する。
ちなみに閉じた時にはpauseイベントが呼ばれる。

レジューム時にはWindowのfocusイベントが呼ばれないので困っていたが、これで何とかなりそうだ。

それにしてもドキュメントェ・・・

サンプルコード

なにはともあれサンプルコード。

app.js
var win = Ti.UI.createWindow();
win.addEventListener("focus", function(){
    Ti.API.info("focus!");
});
win.open();

Ti.App.addEventListener("resume", function(e){
    Ti.API.info("resume!");
});

Ti.App.addEventListener("resumed", function(e){
    Ti.API.info("resumed!");
});

Ti.App.addEventListener("pause", function(e){
    Ti.API.info("pause!");
});

Ti.App.addEventListener("close", function(e){
    Ti.API.info("close!");
});

動作

起動時
[INFO] focus!

起動時にはきちんとfocusが呼ばれる。resumeは呼ばれない。

閉じた時
[INFO] pause!

UIの操作を行うとすぐには実行されず、レジューム時に実行される。
Ti.API.infoの代わりにalertを使うとこのあたりの挙動が確認できる。

レジュームしたとき
[INFO] resume!
[INFO] resumed!

レジューム時にはfocusが呼ばれない。

resumeとresumedの違いはTiModule.mのコメントによると

// Different from resume - there's some information we can only update AFTER the app has popped to the foreground.

ということらしい。
アプリがフォアグラウンドになった後でないとできない処理があるってことかな。UIが絡む処理とか?

closeってイベントもあるようなんだけど、タスク一覧から終了した場合も呼ばれなかった。
iOS 4.0以降ではcloseって呼ばれないものなんでしょうか。

参考

前の記事

Ti.APIがundefined