Skip to content

Commit 46c9de0

Browse files
authored
fix(android): raise resume event on activity.onPostResume() (#6766)
1 parent 42c2537 commit 46c9de0

4 files changed

Lines changed: 32 additions & 8 deletions

File tree

‎tns-core-modules/application/application.android.ts‎

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -290,15 +290,10 @@ function initLifecycleCallbacks() {
290290
onActivityResumed: profile("onActivityResumed", function (activity: android.support.v7.app.AppCompatActivity) {
291291
androidApp.foregroundActivity = activity;
292292

293-
if ((<any>activity).isNativeScriptActivity) {
294-
notify(<ApplicationEventData>{ eventName: resumeEvent, object: androidApp, android: activity });
295-
androidApp.paused = false;
296-
}
297-
298293
androidApp.notify(<AndroidActivityEventData>{ eventName: ActivityResumed, object: androidApp, activity: activity });
299294
}),
300295

301-
onActivitySaveInstanceState: profile("onActivityResumed", function (activity: android.support.v7.app.AppCompatActivity, outState: android.os.Bundle) {
296+
onActivitySaveInstanceState: profile("onActivitySaveInstanceState", function (activity: android.support.v7.app.AppCompatActivity, outState: android.os.Bundle) {
302297
androidApp.notify(<AndroidActivityBundleEventData>{ eventName: SaveActivityState, object: androidApp, activity: activity, bundle: outState });
303298
}),
304299

‎tns-core-modules/ui/frame/activity.android.ts‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ class NativeScriptActivity extends android.support.v7.app.AppCompatActivity {
5050
this._callbacks.onDestroy(this, super.onDestroy);
5151
}
5252

53+
public onPostResume(): void {
54+
this._callbacks.onPostResume(this, super.onPostResume);
55+
}
56+
5357
public onBackPressed(): void {
5458
this._callbacks.onBackPressed(this, super.onBackPressed);
5559
}

‎tns-core-modules/ui/frame/frame.android.ts‎

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -859,13 +859,13 @@ class FragmentCallbacksImplementation implements AndroidFragmentCallbacks {
859859
// lose its parent we temporarily add it to the parent, and then remove it (addViewInLayout doesn't trigger layout pass)
860860
const nativeView = page.nativeViewProtected;
861861
if (nativeView != null) {
862-
const parentView = nativeView.getParent();
862+
const parentView = nativeView.getParent();
863863
if (parentView instanceof android.view.ViewGroup) {
864864
if (parentView.getChildCount() === 0) {
865865
parentView.addViewInLayout(nativeView, -1, new org.nativescript.widgets.CommonLayoutParams());
866866
}
867867

868-
parentView.removeView(nativeView);
868+
parentView.removeView(nativeView);
869869
}
870870
}
871871

@@ -1006,6 +1006,30 @@ class ActivityCallbacksImplementation implements AndroidActivityCallbacks {
10061006
}
10071007
}
10081008

1009+
@profile
1010+
public onPostResume(activity: any, superFunc: Function): void {
1011+
superFunc.call(activity);
1012+
1013+
if (traceEnabled()) {
1014+
traceWrite("NativeScriptActivity.onPostResume();", traceCategories.NativeLifecycle);
1015+
}
1016+
1017+
// NOTE: activity.onPostResume() is called when activity resume is complete and we can
1018+
// safely raise the application resume event;
1019+
// onActivityResumed(...) lifecycle callback registered in application is called too early
1020+
// and raising the application resume event there causes issues like
1021+
// https://github.com/NativeScript/NativeScript/issues/6708
1022+
if ((<any>activity).isNativeScriptActivity) {
1023+
const args = <application.ApplicationEventData>{
1024+
eventName: application.resumeEvent,
1025+
object: application.android,
1026+
android: activity
1027+
};
1028+
application.notify(args);
1029+
application.android.paused = false;
1030+
}
1031+
}
1032+
10091033
@profile
10101034
public onDestroy(activity: any, superFunc: Function): void {
10111035
if (traceEnabled()) {

‎tns-core-modules/ui/frame/frame.d.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,7 @@ export interface AndroidActivityCallbacks {
415415
onSaveInstanceState(activity: any, outState: any, superFunc: Function): void;
416416
onStart(activity: any, superFunc: Function): void;
417417
onStop(activity: any, superFunc: Function): void;
418+
onPostResume(activity: any, superFunc: Function): void;
418419
onDestroy(activity: any, superFunc: Function): void;
419420
onBackPressed(activity: any, superFunc: Function): void;
420421
onRequestPermissionsResult(activity: any, requestCode: number, permissions: Array<String>, grantResults: Array<number>, superFunc: Function): void;

0 commit comments

Comments
 (0)