†でおきしブログ†

ウナギ食べたいヽ(•̀ω•́ )ゝ✧

【cordova】Androidでpauseイベントを受けたければconfig.xmlのKeepRunningをfalseにしない事

☆こちらの記事で知りました

https://ourcodeworld.com/articles/read/388/cordova-pause-and-resume-event-not-firing

結論はタイトルの通り

☆以下、蛇足

cordovaってAndroidの状態遷移(onPause、onResumeとか)ってどのように扱ってるんだろう??
と思って調べてると、KeepRunningっていう設定値があって、デフォルトtrueになってるらしい。

Android の構成 - Apache Cordova

cordovaのAndroidプラットフォームはデフォルトで、バックグラウンドでも動き続けるらしいのです。


けど、調べた感じだとバックグラウンドだとcordovaレイヤー(JavaScript)は動作してなくて、スリープ状態だと動作しちゃってるっぽいんですよね。


OSSですから腑に落ちない点もあるだろうという事で、とりあえずKeepRunningにfalseつけてみたら、スリープ状態でも動作しなくなりました。


で、もうちょい調べを進めていると、Androidネイティブレベルの状態遷移をどうこうしなくても、cordovaのイベントで"pause"と"resume"がある事を知りました。

cordova.apache.org

それで、"pause"と"resume"にAddEventListenerで処理を追加してみたんですが、何故か"pause"イベントが発生するタイミングが期待と反してresumeと同じタイミングで発生したんですよね。

  • バックグラウンド→フォラグラウンドのタイミング
  • スリープ→電源オン(WakeUp)のタイミング

おっかしーなぁと思って調べてると冒頭の記事に遭遇しました。

KeepRunningをtrueにしてれば期待通りのタイミングでpauseイベントが発生しました。

  • バックグラウンドのタイミング
  • スリープのタイミング

f:id:deokisikun:20190308011648p:plain