gpt4 book ai didi

使用 singleTop 的 Android 向上导航

转载 作者:行者123 更新时间:2023-11-29 17:44:06 25 4
gpt4 key购买 nike

我有一个显示一个事件的主要 Activity ( Activity A)(我的应用程序是关于事件管理的),我需要能够打开其他 2 个子 Activity 并能够再次“向上”导航到它们的父级 (A) , 如图所示

                 open                         open
Activity (A) ----------> SubActivity (B) ----------> SubActivity (C)
^ ^ | |
| | | |
| | Up | |
| -------------------------- |
| Up |
-----------------------------------------------------------

因此,我从任何子 Activity 触发此调用:

NavUtils.navigateUpFromSameTask(this);

并确保不重新加载 Activity (A),我在其 AndroidManifest 定义中使用了 singleTop(这样当返回到它时,它将有相同的事件和相同的状态留下它):

android:launchMode="singleTop"

但问题是有一个新的要求从系统通知打开 Activity(A) 并传递一个额外的值和我想打开的 eventId,如果我删除 singleTop 配置,但使用它时,它为我提供了先前加载的 Activity 实例,甚至没有调用它的 onCreate 或其他类似的东西,

那么,我应该如何处理 Activity(A) 的子导航及其通知导航?

最佳答案

通过使用 android:launchMode="singleTop" 将不会重新创建已经存在的 Activity!生命周期也略有变化:当您打开一个已经存在的 Activity 并尝试从您的通知中打开一个“新实例”时,不会再次调用 Activity.onCreate(Bundle) 。相反,方法 Activity.onNewIntent() 将被调用。所以你必须在你的 Activity 中覆盖这个方法。

 @Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// Setup your UI Activity, just like you would to in the onCreate() method
}

更新:以新的 Intent 重启 Activity:

 @Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// pass this extra from the notification only to make a new instance
boolean makeNewInstance = intent.getBooleanExtra("makeNewInstance", false);
if (makeNewInstance) {
finish(); // Finish the current activity
startActivity(intent); // Start new instance by simply using the intent passed as parameter
}
}

关于使用 singleTop 的 Android 向上导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624412/

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