NativeScript の Application Lifecycle について
はじめに
NativeScript(NativeScript-Vue) の Application Lifecycle について。
アプリの起動や終了、バックグラウンドへの移動などを検出して処理させることができる。
TL;DR
application.on(<event>, <handler>)
でイベント検出・ハンドラの設定- NativeScript-Vue の場合は
new Vue().$start()
を実行していればapplication.run
は実行不要
- NativeScript-Vue の場合は
- Android 専用イベント もある
- 詳細未確認
目次
環境・条件
1 | $ sw_vers |
詳細
共通イベント
参考: Use Application Events - Application Lifecycle - NativeScript Docs
以下のイベントに対してイベントハンドラの設定が可能。
launchEvent
: アプリ起動suspendEvent
: アプリ中断resumeEvent
: アプリ再開displayedEvent
: UI 要素の描画完了orientationChangedEvent
: デバイス縦横変化検出exitEvent
: アプリ終了lowMemoryEvent
: メモリ低下uncaughtErrorEvent
: エラー発生
どのイベントも tns-core-modules/application
を使って application.on
で検出。
1 | const application = require("tns-core-modules/application"); |
NativeScript-Vue の場合
NativeScript の場合、公式の例だとイベントハンドラを設定しつつ application.run
を実行している。
1 | const application = require("tns-core-modules/application"); |
NativeScript-Vue の場合、app/main.js
で application.on
の設定をするだけで良い。(application.run
の実行は不要)
1 | import Vue from 'nativescript-vue' |
※少し調べてみたところ、/platform/nativescript/runtime/index.js
で、new Vue().$start()
を実行すると (application.)run
が呼ばれるようになっていた。
イベント詳細
launchEvent
アプリ起動時に発火。
Android では機種や OS Version によっては、アプリがバックグラウンドにある状態であっても、スイッチャーからではなくアプリアイコンから起動すると発火する(っぽい)。
1 | const application = require("tns-core-modules/application"); |
suspendEvent
アプリ中断時に発火。ホーム画面の表示、他アプリへの切り替えなどによるバックグラウンドへの移動。
アプリスイッチャーを起動した瞬間に発火する。(例えそのまま復帰したとしても)
1 | const application = require("tns-core-modules/application"); |
resumeEvent
アプリ再開時に発火。バックグラウンドからの復帰(フォアグラウンドへの移動)。
「アプリ画面 → スイッチャー → そのままアプリに戻ってくる」でも発火する。
1 | const application = require("tns-core-modules/application"); |
displayedEvent
アプリ表示時(UI 要素の描画完了時)に発火。
1 | const application = require("tns-core-modules/application"); |
orientationChangedEvent
デバイスの縦横変化時に発火
1 | const application = require("tns-core-modules/application"); |
exitEvent
アプリ終了時に発火
1 | const application = require("tns-core-modules/application"); |
lowMemoryEvent
メモリ低下時に発火。(他アプリにメモリを食われた時?)
1 | const application = require("tns-core-modules/application"); |
uncaughtErrorEvent
エラー発生時に発火。
1 | const application = require("tns-core-modules/application"); |
Android 専用イベント
Android 専用イベントもある模様。
参考: Android Activity Events - Application Lifecycle - NativeScript Docs
※触ってないし理解もできてないので参考リンクのみ。触ることがあれば別途まとめる。
まとめ
application.on(<event>, <handler>)
でイベント検出・ハンドラの設定- NativeScript-Vue の場合は
new Vue().$start()
を実行していればapplication.run
は実行不要
- NativeScript-Vue の場合は
- Android 専用イベント もある
- 詳細未確認
参考文献
- Application Lifecycle - NativeScript Docs
- How to check when app is in the background - Android - NativeScript Community Forum
関連記事
- NativeScript, JsBarcode でバーコードを 生成/描画
- NativeScript でデバイスの輝度(明るさ)を制御する
- NativeScript で入力範囲外タップでキーボードを非表示にする
- NativeScript で Locale を意識した DatePicker/TimePicker
- NativeScript-Vue で次入力欄にフォーカスする方法
- NativeScript-Vue でページ読み込み後にページ移動やダイアログの表示
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア