【问题标题】:Android Studio - Activity Life Cycles, On ResumeAndroid Studio - 活动生命周期,恢复
【发布时间】:2015-11-20 16:39:17
【问题描述】:

我如何知道活动是否由于按下按钮并因此启动意图而进入 onResume,或者用户是否选择返回?

编辑:

  • 基本上,Activity A 正在播放歌曲

  • 您可以在 Activity B 中选择要播放的新歌曲,这会将意图发送回 Activity A 以开始新歌曲

  • 但目前如果从 Activity B 按下“返回”,我需要歌曲继续播放,而不是它在重新启动的那一刻执行的操作,因为它从之前在 onResume() 中运行意图;

【问题讨论】:

  • 您可以尝试在开始意图之前在按钮 onClick 和 onBackpressed 上放置不同的日志
  • 有必要澄清一下您是指您的 UI 按钮,还是手机上的软按钮(返回、主页等)。
  • 您的问题存在误解。准确地描述你的意图和你试图完成的事情。它将帮助您获得合理的答复。

标签: android onresume activity-lifecycle


【解决方案1】:

当用户从Activity 导航到另一个Activity 时,您可以使用startActivityForResult 并在新ActivitysetResult 中设置参数,例如按下哪个按钮。

你不能做的是总是知道用户是如何到达onResume的,因为事情发生在你的控制之外。例如,一个电话可以让应用程序后台运行,一旦完成,它就会返回到前台。

如果您有间接操作(例如活动 A -> 活动 B ->活动 C -> 活动 A)。

对于PendingIntents,您还可以包含有关启动应用程序/Activity 的数据。

编辑:

如果您只是想将数据放入Intent,以便在启动Activity 时,您可以使用如下代码:

Intent intent = new Intent();
intent.setClass(this, MyActivity.class);
intent.putExtra("BUTTON_ID", "button_a");
startActivity(intent);

但是,请记住,如果Activity 已经在运行,则需要使用onNewIntent,然后将新的Intent 发送到Activity 以“启动”它。这似乎是您遇到的核心问题。但是,您还需要在使用 Intent 数据后“重置”它 - 否则,如果在没有新的 Intent 的情况下恢复 Activity,那么您仍将拥有旧的 Intent 数据。

【讨论】:

  • 基本上我希望我的代码是这样的:如果(意图通过活动 B 中的按钮启动)然后执行 A,否则 - 其他任何事情 -
【解决方案2】:

您可以覆盖onBackPressed 以查看用户是否按下了返回按钮。但是,用户仍然可以按 Home/Recents 按钮将活动发送到后台。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-13
    • 2011-12-18
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多