feat: allow app to start without a root view

This commit is contained in:
Eduardo Speroni
2020-11-19 17:34:57 -03:00
parent 539fd1eb29
commit d5409c1c67
4 changed files with 11 additions and 3 deletions

View File

@ -20,7 +20,7 @@ export interface ApplicationEventData extends EventData {
}
export interface LaunchEventData extends ApplicationEventData {
root?: View;
root?: View | null;
savedInstanceState?: any /* android.os.Bundle */;
}

View File

@ -103,8 +103,9 @@ export interface LaunchEventData extends ApplicationEventData {
/**
* The root view for this Window on iOS or Activity for Android.
* If not set a new Frame will be created as a root view in order to maintain backwards compatibility.
* If explicitly set to null, there will be no root view.
*/
root?: View;
root?: View | null;
savedInstanceState?: any /* android.os.Bundle */;
}

View File

@ -207,7 +207,9 @@ export class iOSApplication implements iOSApplicationDefinition {
// this._window will be undefined when NS app is embedded in a native one
if (this._window) {
this.setWindowContent(args.root);
if (args.root !== null) {
this.setWindowContent(args.root);
}
} else {
this._window = UIApplication.sharedApplication.delegate.window;
}

View File

@ -1301,13 +1301,18 @@ class ActivityCallbacksImplementation implements AndroidActivityCallbacks {
if (!rootView) {
const mainEntry = application.getMainEntry();
const intent = activity.getIntent();
let ensureNoRootView = false;
if (fireLaunchEvent) {
// entry point for Angular and Vue frameworks
rootView = notifyLaunch(intent, <any>savedInstanceState, null);
ensureNoRootView = rootView === null;
}
if (!rootView) {
if(ensureNoRootView) {
return;
}
// entry point for NS Core
if (!mainEntry) {
// Also handles scenarios with Angular and Vue where the notifyLaunch didn't return a root view.