fix(android): raise resume event on activity.onPostResume() (#6766)

This commit is contained in:
Manol Donev
2019-01-08 15:20:11 +02:00
committed by GitHub
parent 42c25370ee
commit 46c9de020e
4 changed files with 32 additions and 8 deletions

View File

@ -290,15 +290,10 @@ function initLifecycleCallbacks() {
onActivityResumed: profile("onActivityResumed", function (activity: android.support.v7.app.AppCompatActivity) { onActivityResumed: profile("onActivityResumed", function (activity: android.support.v7.app.AppCompatActivity) {
androidApp.foregroundActivity = activity; androidApp.foregroundActivity = activity;
if ((<any>activity).isNativeScriptActivity) {
notify(<ApplicationEventData>{ eventName: resumeEvent, object: androidApp, android: activity });
androidApp.paused = false;
}
androidApp.notify(<AndroidActivityEventData>{ eventName: ActivityResumed, object: androidApp, activity: activity }); androidApp.notify(<AndroidActivityEventData>{ eventName: ActivityResumed, object: androidApp, activity: activity });
}), }),
onActivitySaveInstanceState: profile("onActivityResumed", function (activity: android.support.v7.app.AppCompatActivity, outState: android.os.Bundle) { onActivitySaveInstanceState: profile("onActivitySaveInstanceState", function (activity: android.support.v7.app.AppCompatActivity, outState: android.os.Bundle) {
androidApp.notify(<AndroidActivityBundleEventData>{ eventName: SaveActivityState, object: androidApp, activity: activity, bundle: outState }); androidApp.notify(<AndroidActivityBundleEventData>{ eventName: SaveActivityState, object: androidApp, activity: activity, bundle: outState });
}), }),

View File

@ -50,6 +50,10 @@ class NativeScriptActivity extends android.support.v7.app.AppCompatActivity {
this._callbacks.onDestroy(this, super.onDestroy); this._callbacks.onDestroy(this, super.onDestroy);
} }
public onPostResume(): void {
this._callbacks.onPostResume(this, super.onPostResume);
}
public onBackPressed(): void { public onBackPressed(): void {
this._callbacks.onBackPressed(this, super.onBackPressed); this._callbacks.onBackPressed(this, super.onBackPressed);
} }

View File

@ -1006,6 +1006,30 @@ class ActivityCallbacksImplementation implements AndroidActivityCallbacks {
} }
} }
@profile
public onPostResume(activity: any, superFunc: Function): void {
superFunc.call(activity);
if (traceEnabled()) {
traceWrite("NativeScriptActivity.onPostResume();", traceCategories.NativeLifecycle);
}
// NOTE: activity.onPostResume() is called when activity resume is complete and we can
// safely raise the application resume event;
// onActivityResumed(...) lifecycle callback registered in application is called too early
// and raising the application resume event there causes issues like
// https://github.com/NativeScript/NativeScript/issues/6708
if ((<any>activity).isNativeScriptActivity) {
const args = <application.ApplicationEventData>{
eventName: application.resumeEvent,
object: application.android,
android: activity
};
application.notify(args);
application.android.paused = false;
}
}
@profile @profile
public onDestroy(activity: any, superFunc: Function): void { public onDestroy(activity: any, superFunc: Function): void {
if (traceEnabled()) { if (traceEnabled()) {

View File

@ -415,6 +415,7 @@ export interface AndroidActivityCallbacks {
onSaveInstanceState(activity: any, outState: any, superFunc: Function): void; onSaveInstanceState(activity: any, outState: any, superFunc: Function): void;
onStart(activity: any, superFunc: Function): void; onStart(activity: any, superFunc: Function): void;
onStop(activity: any, superFunc: Function): void; onStop(activity: any, superFunc: Function): void;
onPostResume(activity: any, superFunc: Function): void;
onDestroy(activity: any, superFunc: Function): void; onDestroy(activity: any, superFunc: Function): void;
onBackPressed(activity: any, superFunc: Function): void; onBackPressed(activity: any, superFunc: Function): void;
onRequestPermissionsResult(activity: any, requestCode: number, permissions: Array<String>, grantResults: Array<number>, superFunc: Function): void; onRequestPermissionsResult(activity: any, requestCode: number, permissions: Array<String>, grantResults: Array<number>, superFunc: Function): void;