Android Studio - 活动生命周期,On Resume

3
如何判断一个Activity是否由于按钮被按下而进入onResume,从而启动了Intent,还是用户选择返回导航?
编辑:
- 基本上,Activity A正在播放一首歌。 - 您可以在Activity B中选择要播放的新歌曲,该活动会向Activity A发送意图以开始新歌曲。 - 但是,如果从Activity B按“返回”键,我需要继续播放歌曲,而不是像目前这样重新启动,因为它在onResume()中运行先前的意图。

您可以在开始意图和按下返回键之前尝试在按钮onClick上放置不同的日志。 - Bhargav Thanki
可能值得澄清的是,您是指UI按钮还是手机上的软按钮(返回、主页等)。 - Knossos
你的问题显示了误解。请准确描述你的意图和想要实现的目标。这将有助于你获得合理的回复。 - JanPl
2个回答

2
当用户从一个Activity导航到另一个Activity时,您可以使用startActivityForResult并在新的ActivitysetResult中设置参数,例如按下哪个按钮。
但是,您无法始终知道用户如何到达onResume,因为有些事情超出了您的控制。例如,电话呼叫可能会将应用程序置于后台,一旦完成,它就会返回前台。
您还可以使用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以“启动”它,那么您需要使用onNewIntent。这似乎是您所遇到的核心问题。但是,您还需要在使用后“重置”意图数据-否则,如果Activity在没有新Intent的情况下恢复,则仍将具有旧的Intent数据。


基本上我想让我的代码这样:如果(通过B活动中的按钮启动意图),则执行A,否则-任何其他操作-。 - Natalia Sharon

0

您可以重写 onBackPressed 方法来检测用户是否按下了返回按钮。但是,用户仍然可以按下 Home/Recents 按钮将活动发送到后台。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接