android - 我如何强制一个 Activity 使用我传递给它的额外 Intent ?

标签 android

我有一堆 Activity ,并使用以下代码将主要 Activity 置于“Activity ”状态:

Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
i.putExtra("clearCache", true);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

问题是,当我尝试检索 clearCache extra 时,对 getIntent().getExtras() 的调用返回 null。

我的理解是,因为我要启动的 Activity 已经在堆栈中,并且因为我设置了 Intent.FLAG_ACTIVITY_CLEAR_TOP 标志,所以返回的 Intent 将是原始 Intent 。

如何访问我正在启动的 Activity 中的调用 Intent ?

最佳答案

在关于 FLAG_ACTIVITY_CLEAR_TOP 的谷歌文档中,您应该每次都获得新的 Intent :

“如果设置,并且正在启动的 Activity 已经在当前任务中运行,那么将关闭该 Activity 之上的所有其他 Activity ,而不是启动该 Activity 的新实例,并将此 Intent 传递给将(现在位于顶部的)旧 Activity 作为新 Intent。”

...

“上例中 Activity B 的当前运行实例将在其 onNewIntent() 方法中接收您在此处启动的新 Intent,或者自行完成并使用新 Intent 重新启动。如果它已声明其启动模式为“多个”(默认)并且您没有在同一 Intent 中设置 FLAG_ACTIVITY_SINGLE_TOP,那么它将完成并重新创建;对于所有其他启动模式,或者如果设置了 FLAG_ACTIVITY_SINGLE_TOP,则此 Intent 将被传递到当前实例的onNewIntent()。”

更多详情请看这里:

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

希望对您有所帮助!

关于android - 我如何强制一个 Activity 使用我传递给它的额外 Intent ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15616878/

相关文章:

android - Google Web Fonts 不适用于 Android 4.2.2 高棉语

android.app.PendingIntent 无法在包之外访问

android - 按下后退箭头时如何恢复上一个 Activity 的状态

java - 如何从天数转换为天数、周数、月数、年数(以每日储蓄计)

java - 每次单击按钮后如何从位图中删除点

java - Google Cloud Speech to Text 错误 : java. lang.NoSuchMethodError: No virtual method build()Lcom/google/protobuf/GeneratedMessageLite;

android - Robolectric + PowerMock + Mockito 不工作

android - Android 9 Pie 在手机上创建 SQLite 数据库文件的变化(?)

android - 我的应用程序在 honeycomb 上没有出现菜单键?

java - 将 gradle 项目导入为模块后,android studio 无法解析 Symbol R