☆こちらの記事で知りました
https://ourcodeworld.com/articles/read/388/cordova-pause-and-resume-event-not-firing
結論はタイトルの通り
☆以下、蛇足
cordovaってAndroidの状態遷移(onPause、onResumeとか)ってどのように扱ってるんだろう??
と思って調べてると、KeepRunningっていう設定値があって、デフォルトtrueになってるらしい。
cordovaのAndroidプラットフォームはデフォルトで、バックグラウンドでも動き続けるらしいのです。
:
:
けど、調べた感じだとバックグラウンドだとcordovaレイヤー(JavaScript)は動作してなくて、スリープ状態だと動作しちゃってるっぽいんですよね。
OSSですから腑に落ちない点もあるだろうという事で、とりあえずKeepRunningにfalseつけてみたら、スリープ状態でも動作しなくなりました。
で、もうちょい調べを進めていると、Androidネイティブレベルの状態遷移をどうこうしなくても、cordovaのイベントで"pause"と"resume"がある事を知りました。
それで、"pause"と"resume"にAddEventListenerで処理を追加してみたんですが、何故か"pause"イベントが発生するタイミングが期待と反してresumeと同じタイミングで発生したんですよね。
- バックグラウンド→フォラグラウンドのタイミング
- スリープ→電源オン(WakeUp)のタイミング
おっかしーなぁと思って調べてると冒頭の記事に遭遇しました。
KeepRunningをtrueにしてれば期待通りのタイミングでpauseイベントが発生しました。
- バックグラウンドのタイミング
- スリープのタイミング