Add 'displayed' event for android, close to the Displayed point logged in the android monitor for activity startup

This commit is contained in:
Panayot Cankov
2017-05-16 10:55:10 +03:00
parent 3dce766b87
commit 90d36b26d3
3 changed files with 26 additions and 2 deletions

View File

@@ -21,6 +21,7 @@ import { UnhandledErrorEventData, iOSApplication, AndroidApplication, CssChanged
export const launchEvent = "launch";
export const suspendEvent = "suspend";
export const displayedEvent = "displayed";
export const resumeEvent = "resume";
export const exitEvent = "exit";
export const lowMemoryEvent = "lowMemory";
@@ -45,6 +46,7 @@ export let ios = undefined;
export const on: typeof events.on = events.on.bind(events);
export const off: typeof events.off = events.off.bind(events);
export const notify: typeof events.notify = events.notify.bind(events);
export const hasListeners: typeof events.hasListeners = events.hasListeners.bind(events);
let app: iOSApplication | AndroidApplication;
export function setApplication(instance: iOSApplication | AndroidApplication): void {

View File

@@ -4,7 +4,7 @@
} from ".";
import {
notify, lowMemoryEvent, orientationChangedEvent, suspendEvent, resumeEvent,
notify, hasListeners, lowMemoryEvent, orientationChangedEvent, suspendEvent, resumeEvent, displayedEvent,
setApplication, livesync, Observable
} from "./application-common";
@@ -181,7 +181,19 @@ function initLifecycleCallbacks() {
androidApp.startActivity = activity;
}
androidApp.notify(<AndroidActivityBundleEventData>{ eventName: ActivityCreated, object: androidApp, activity: activity, bundle: savedInstanceState });
androidApp.notify(<AndroidActivityBundleEventData>{ eventName: ActivityCreated, object: androidApp, activity, bundle: savedInstanceState });
if (hasListeners(displayedEvent)) {
let rootView = activity.findViewById((<any>android).R.id.content);
let onGlobalLayoutListener = new android.view.ViewTreeObserver.OnGlobalLayoutListener({
onGlobalLayout() {
notify({ eventName: displayedEvent, object: androidApp, activity });
let viewTreeObserver = rootView.getViewTreeObserver();
viewTreeObserver.removeOnGlobalLayoutListener(onGlobalLayoutListener);
}
});
rootView.getViewTreeObserver().addOnGlobalLayoutListener(onGlobalLayoutListener);
}
},
onActivityDestroyed: function (activity: android.app.Activity) {

View File

@@ -11,6 +11,11 @@ import { NavigationEntry, View, Observable, EventData } from "../ui/frame";
*/
export var launchEvent: string;
/**
* String value used when hooking to displayed event.
*/
export var displayedEvent: string;
/**
* String value used when hooking to uncaughtError event.
*/
@@ -189,6 +194,11 @@ 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.
*/
export function on(event: "displayed", callback: (args: EventData) => void, thisArg?: any);
/**
* This event is raised when the Application is suspended.
*/