mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 11:01:21 +08:00
feat: allow app to start without a root view
This commit is contained in:
@ -20,7 +20,7 @@ export interface ApplicationEventData extends EventData {
|
||||
}
|
||||
|
||||
export interface LaunchEventData extends ApplicationEventData {
|
||||
root?: View;
|
||||
root?: View | null;
|
||||
savedInstanceState?: any /* android.os.Bundle */;
|
||||
}
|
||||
|
||||
|
3
packages/core/application/index.d.ts
vendored
3
packages/core/application/index.d.ts
vendored
@ -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 */;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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.
|
||||
|
Reference in New Issue
Block a user