mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 20:11:24 +08:00
fix(android-next): force frame fragment disposal on unload (#6189)
This commit is contained in:
@ -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 {
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user