gpt4 book ai didi

android - 如何防止 fragment 在 Activity 娱乐中触发 onCreate onCreateView

转载 作者:太空狗 更新时间:2023-10-29 15:12:32 26 4
gpt4 key购买 nike

所以我有 Activity A、B、C应用流程是 A->B->C

A,B 与登录功能相关联,并且只启动一次以登录。整个应用程序都在 C Activity 中。当用户使用 C 时,A、B 处于 Activity 状态。一切正常。

现在..

我杀死了应用程序的 PID。然后从任务管理器中选择它。

A 未启动,B 未启动,C->onCreate(not null) 触发。

我可以通过检查是否有 A 或 B 的实例存活来检测这种情况。所以现在我知道这个特定场景已经发生,我想重新启动应用程序 -> 到 Activity A,所以它是一个新的启动。

问题是在 onCraete(not null) 中重启应用

在 Activity C 的 onCreate(not null) 中,我做了这样的事情:

if (A==null or B==null)
finish;
return;

然后在 Activity B 中相同。这有效,C 和 B 完成,A 弹出。然而与此同时......

fragment onCreate && onCreateView 在调用 C onDestroy 之前触发。因为我在 Activity C 中有很多 fragment ,所以这会导致应用程序崩溃。

所以,我的问题是。在这种情况下,有没有办法在 Activity C onCreate(非空)(甚至在 C onCreate 之外;在 list 中?)中强制重启应用程序,以便不调用 fragment onCreate 和 onCreateView?

P.S:我已经在 list 中尝试过 clearTaskonLaunch,但这会强制应用程序重新启动,即使我只是暂停/恢复屏幕也是如此。

任何建议都会有帮助

最佳答案

我有一个非常相似的场景。似乎向基类的 OnCreate 发送一个 null 值可以防止 fragment 重新加载。这是我的基 Activity 类的代码 fragment (它在 C# Xamarin.Android 中,但足够简单易懂):

    protected override void OnCreate(Bundle savedInstanceState)
{
if (IsInvalidAppState()) {
GoToLoginActivity();
base.OnCreate(null);
} else {
base.OnCreate(savedInstanceState);
}
}

private void GoToLoginActivity()
{
var intent = new Intent(Application.Context, typeof(LoginActivity));
intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.NewTask | ActivityFlags.ClearTask);
StartActivity(intent);
}

private bool IsInvalidAppState()
{
// Figure out if everything is initialized correctly
}

关于android - 如何防止 fragment 在 Activity 娱乐中触发 onCreate onCreateView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15525887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com