fix(android-next): force frame fragment disposal on unload (#6189)

This commit is contained in:
Manol Donev
2018-08-17 11:31:44 +03:00
committed by GitHub
parent 8e9c6d5f32
commit 22cb539c9d
2 changed files with 3 additions and 22 deletions

View File

@ -197,21 +197,8 @@ export class Frame extends FrameBase {
const manager: android.support.v4.app.FragmentManager = this._getFragmentManager();
const transaction = manager.beginTransaction();
const androidSdkVersion = sdkVersion();
if (androidSdkVersion !== 21 && androidSdkVersion !== 22) {
transaction.remove(this._currentEntry.fragment);
} else {
// https://github.com/NativeScript/NativeScript/issues/5674
// HACK: Add and remove dummy fragment to workaround a Lollipop issue
// with inFragment passed as null when adding transition targets: https://android.googlesource.com/platform/frameworks/base.git/+/lollipop-release/core/java/android/app/BackStackRecord.java#1127
const dummyFragmentTag = "dummy";
const dummyFragment = this.createFragment(<BackstackEntry>{}, dummyFragmentTag);
transaction.replace(this.containerViewId, dummyFragment, dummyFragmentTag);
transaction.remove(dummyFragment);
}
transaction.commitAllowingStateLoss();
transaction.commitNowAllowingStateLoss();
}
private createFragment(backstackEntry: BackstackEntry, fragmentTag: string): android.support.v4.app.Fragment {

View File

@ -201,13 +201,7 @@ function initializeNativeClasses() {
finishUpdate(container: android.view.ViewGroup): void {
if (this.mCurTransaction != null) {
if (android.os.Build.VERSION.SDK_INT >= 24) {
(<any>this.mCurTransaction).commitNowAllowingStateLoss();
} else {
this.mCurTransaction.commitAllowingStateLoss();
this.owner._getFragmentManager().executePendingTransactions();
}
this.mCurTransaction = null;
}
}