10000 Fix navigatedFrom event raised when Activity is destroyed without act… · hbcodeXCI/NativeScript@d62f018 · GitHub
[go: up one dir, main page]

Skip to content

Commit d62f018

Browse files
author
Hristo Hristov
committed
Fix navigatedFrom event raised when Activity is destroyed without actual navigation. (NativeScript#2100)
1 parent 3fa46f1 commit d62f018

File tree

4 files changed

+20
-2
lines changed

4 files changed

+20
-2
lines changed

ui/frame/frame-common.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ export class Frame extends CustomLayoutView implements definition.Frame {
205205
var backstackEntry: definition.BackstackEntry = {
206206
entry: entry,
207207
resolvedPage: page,
208+
isNavigation: true
208209
};
209210

210211
var navigationContext: NavigationContext = {

ui/frame/frame.android.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,11 @@ export class Frame extends frameCommon.Frame {
137137
let manager = activity.getFragmentManager();
138138
let isFirstNavigation = types.isNullOrUndefined(this._currentEntry);
139139

140+
backstackEntry.isNavigation = true;
141+
if (this._currentEntry) {
142+
this._currentEntry.isNavigation = true;
143+
}
144+
140145
// Clear history
141146
if (backstackEntry.entry.clearHistory) {
142147
let backStackEntryCount = manager.getBackStackEntryCount();
@@ -260,9 +265,11 @@ export class Frame extends frameCommon.Frame {
260265
public _goBackCore(backstackEntry: definition.BackstackEntry) {
261266
navDepth = backstackEntry[NAV_DEPTH];
262267

268+
backstackEntry.isNavigation = true;
263269
if (this._currentEntry) {
264270
// We need this information inside onFragmentHidden
265271
this._currentEntry[IS_BACK] = true;
272+
this._currentEntry.isNavigation = true;
266273
}
267274

268275
trace.write(`${this}._goBackCore(pageId: ${backstackEntry.resolvedPage.id}, backstackVisible: ${this._isEntryBackstackVisible(backstackEntry)}, clearHistory: ${backstackEntry.entry.clearHistory}), navDepth: ${navDepth}`, trace.categories.Navigation);

ui/frame/frame.d.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ declare module "ui/frame" {
209209
* - slideBottom
210210
*/
211211
name?: string;
212-
212+
213213
/**
214214
* An user-defined instance of the "ui/transition".Transition class.
215215
*/
@@ -233,6 +233,10 @@ declare module "ui/frame" {
233233
export interface BackstackEntry {
234234
entry: NavigationEntry;
235235
resolvedPage: pages.Page;
236+
237+
//@private
238+
isNavigation: boolean;
239+
//@endprivate
236240
}
237241

238242
/**

ui/transition/transition.android.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,7 @@ function _completePageAddition(fragment: any, isBack: boolean) {
289289
frame._currentEntry = entry;
290290
page.onNavigatedTo(isBack);
291291
frame._processNavigationQueue(page);
292+
entry.isNavigation = undefined;
292293
trace.write(`ADDITION of ${page} completed`, trace.categories.Transition);
293294
}
294295

@@ -300,7 +301,10 @@ function _completePageRemoval(fragment: any, isBack: boolean) {
300301
var page: pageModule.Page = entry.resolvedPage;
301302
if (page.frame) {
302303
frame._removeView(page);
303-
page.onNavigatedFrom(isBack);
304+
// This could be undefined if activity is destroyed (e.g. without actual navigation).
305+
if (entry.isNavigation) {
306+
page.onNavigatedFrom(isBack);
307+
}
304308
trace.write(`REMOVAL of ${page} completed`, trace.categories.Transition);
305309
}
306310
else {
@@ -317,6 +321,8 @@ function _completePageRemoval(fragment: any, isBack: boolean) {
317321
trace.write(`DETACHMENT of ${page} has already been done`, trace.categories.Transition);
318322
}
319323
}
324+
325+
entry.isNavigation = undefined;
320326
}
321327

322328
function _addNativeTransitionListener(fragment: any, nativeTransition: any/*android.transition.Transition*/) {

0 commit comments

Comments
 (0)
0