Android Studio - Activity 生命周期,关于简历

Android Studio - Activity Life Cycles, On Resume

我如何知道 activity 是否因按下按钮而进入 onResume 并因此启动了 intent,或者用户是否选择了返回导航?

编辑:

您可以覆盖 onBackPressed 以查看用户是否按下了“后退”按钮。但是,用户仍然可以按Home/Recents按钮将activity发送到后台。

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

你不能做的是总是知道用户是如何到达 onResume 的,因为事情发生在你的控制之外例如 phone 调用可能会使应用程序后台运行,一旦完成,它 returns到前台。

您还可以使用 onNewIntent 帮助从另一个 Activity 导航,它没有启动您正在尝试监视的 Activity,如果您有间接操作(例如Activity A -> Activity B -> Activity C -> Activity A).

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

编辑:

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

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

但是,请记住,如果 Activity 已经 运行,并且新的 Intent 发送到 Activity,您将需要使用 onNewIntent到"start"吧。这似乎是您遇到的核心问题。但是,您还需要在使用后 "reset" 意图数据 - 否则如果 Activity 在没有新的 Intent 的情况下恢复,那么您将仍然拥有旧的 Intent 数据。