From 610794f709fee509a01ef7778680fee17e2a8b78 Mon Sep 17 00:00:00 2001 From: Panayot Cankov Date: Tue, 16 May 2017 12:52:09 +0300 Subject: [PATCH] Add 'displayed' event on application for iOS --- tns-core-modules/application/application.d.ts | 4 +++- tns-core-modules/application/application.ios.ts | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/tns-core-modules/application/application.d.ts b/tns-core-modules/application/application.d.ts index 0fd27e2b8..3fc9d7c71 100644 --- a/tns-core-modules/application/application.d.ts +++ b/tns-core-modules/application/application.d.ts @@ -195,7 +195,9 @@ export function hasListeners(eventName: string): boolean; export function on(event: "launch", callback: (args: LaunchEventData) => void, thisArg?: any); /** - * This event is raised after the application has launched and was fully drawn. + * This event is raised after the application has performed most of its startup actions. + * Its intent is to be suitable for measuring app startup times. + * @experimental */ export function on(event: "displayed", callback: (args: EventData) => void, thisArg?: any); diff --git a/tns-core-modules/application/application.ios.ts b/tns-core-modules/application/application.ios.ts index eb8924945..74ef34e32 100644 --- a/tns-core-modules/application/application.ios.ts +++ b/tns-core-modules/application/application.ios.ts @@ -2,7 +2,7 @@ import { notify, launchEvent, resumeEvent, suspendEvent, exitEvent, lowMemoryEvent, - orientationChangedEvent, setApplication, livesync + orientationChangedEvent, setApplication, livesync, displayedEvent } from "./application-common"; // First reexport so that app module is initialized. @@ -16,6 +16,8 @@ class Responder extends UIResponder { // } +let displayedOnce = false; + class Window extends UIWindow { public content; @@ -138,7 +140,13 @@ class IOSApplication implements IOSApplicationDefinition { } private didBecomeActive(notification: NSNotification) { - notify({ eventName: resumeEvent, object: this, ios: utils.ios.getter(UIApplication, UIApplication.sharedApplication) }); + let ios = utils.ios.getter(UIApplication, UIApplication.sharedApplication); + let object = this; + notify({ eventName: resumeEvent, object, ios }); + if (!displayedOnce) { + notify({ eventName: displayedEvent, object, ios }); + displayedOnce = true; + } } private didEnterBackground(notification: NSNotification) {