【问题标题】:Update the first screen automatically even if it is declared as android:launchMode="singleTask"自动更新第一个屏幕,即使它被声明为 android:launchMode="singleTask"
【发布时间】:2011-03-11 05:55:20
【问题描述】:

我有 2 项活动。活动 A 和活动 B。两者都通过意图相互调用。 Activity A 调用 Activity B。Activity B 访问数据库并通过 putExtra() 和 getExtra() 将其发送回 Activity A。
现在我的活动 A 是这样声明的 android:launchMode="singleTask"
当我回到活动 A 时,我希望我的活动 A 自动更新或刷新。但令我惊讶的是,我在调试时理解了什么,如果我将一个活动声明为 launchMode="singleTask" 那么它只会将屏幕从堆栈中移到顶部。它实际上并没有进入代码内部。
我理解的概念正确吗?
我看到的解决方案是有一个刷新按钮,单击该按钮可以访问代码和更新屏幕。但我不想那样做。你认为还有其他选择吗?我不想更改 launchMode="singleTask"

提前致谢。

【问题讨论】:

  • 你试过 startActivityForResult(intent);并在返回 A 时检查结果并更新您的 A。
  • 好吧,我还没有尝试过,但我怀疑它是否会有所帮助,因为正如我所说,根本没有访问代码。但是,是的,你也可能是对的,我会试一试。
  • 嘿,它有效,非常感谢。请将您的答案发布为不同的专栏,以便我投票。谢谢
  • 很高兴知道。我一定会发布答案。

标签: android android-intent


【解决方案1】:

尝试startActivityForResult(intent);,当你在 B 中完成 setResult(RESULT_OK);finish(); B 活动时,在 A 中 onActivityResult(int,int,intent); 捕获结果代码,如果它是 RESULT_OK 更新你的 A。

【讨论】:

    【解决方案2】:

    无论哪种launchMode,当你从Activity B切换到Activity A时,都必须调用onResume()方法。您可以将刷新代码放在那里以更新您的活动 A。

    【讨论】:

    • 我没有做任何 onPause() 那么我该怎么做 onResume() ?你能用任何例子解释一下吗?谢谢。
    • 读取Activity的生命周期:developer.android.com/reference/android/app/…,每当你的Activity A被带到后台(即不在前面),它就会进入onPause状态。
    【解决方案3】:

    将您的刷新部分放在 onResume 方法中。一旦 Activity B 完成,您的 onResume 方法将在 Activity A 中调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多