Android 关于活动的生命周期

Android 关于活动的生命周期,android,android-activity,Android,Android Activity,在我的应用程序中,我有几个活动,主屏幕有4个按钮,每个按钮启动不同的活动。其中一个是搜索活动,一旦搜索,就会显示一个结果活动。此结果活动可以从其他活动中获得,因此一般情况下如下: Main activity -> Search activity -> Result activity Main acitivty -> someother activity -> Result activity 现在,如果我已达到此结果活动并按back一次或两次,然后按Home键,它将显示

在我的应用程序中,我有几个活动,主屏幕有4个按钮,每个按钮启动不同的活动。其中一个是搜索活动,一旦搜索,就会显示一个结果活动。此结果活动可以从其他活动中获得,因此一般情况下如下:

Main activity -> Search activity -> Result activity

Main acitivty -> someother activity -> Result activity
现在,如果我已达到此结果活动并按back一次或两次,然后按Home键,它将显示Home屏幕。但是,如果我想通过按住Home按钮并单击我的应用程序返回到我的应用程序,它将始终返回到结果活动,无论我最后使用的是哪个活动。如果我再次按back,它将带我回到主屏幕

如果我再试一次,它将再次带我到结果活动。避免这种情况的唯一方法是通过单击应用程序的图标来启动应用程序。这会将我带到我使用的最后一个活动,它会记住状态,因此如果我再次按下back,它不会将我带到主屏幕,而是带到它之前的活动。为了说明这一点:

Main activity -> Search activity -> result activity --back--> Search activity --Home Button--> Home Screen --Hold Home and select the app --> Result activity --back--> Home Screen

--Click application icon--> Search activity --back--> Main activity
发生的另一件事是,如果我在“结果”活动中按下“主页”按钮,然后通过单击图标启动应用程序,它会将我带到“结果”活动之前的活动


为什么会这样?任何解决方法?

设置为true。

看起来您的intent.addFlags使用您自己的“自定义”标志向新活动发送值(R.id.flag\u search)?我不确定这是支持的还是旗帜和活动的预期用途。此处记录了这些标志:


这难道不正是我们想要的吗?另外,文档中还说“此属性仅对任务的根活动有意义;对所有其他活动都忽略它。”您如何启动活动?您打算使用的任何特定标志?是的,我正在添加一个标志来启动结果活动,并且我也传递了一些数据。类似这样的内容:Intent=newintent(this,Result.class);意图。额外(“结果”,收敛);intent.addFlags(R.id.flag\u搜索);星触觉(意向);仔细研究,intent.addFlags(R.id.flag\u search)通过注释掉行或使用任何int而不是R.id.flag\u search解决了这个问题。嗯,为什么我不能把我的旗帜存放在那里?我应该使用静态类来存储不同的标志吗?忽略我的最后一个问题(我无法编辑它),我现在知道我不应该为此使用addFlags。谢谢!这就是问题所在。我想我必须用另一种方法来区分我的活动。所以我能想到的唯一方法就是使用Intent.putExtra,或者还有其他方法吗?我相信Intent.putExtra是满足活动之间所有数据发送需求的方法。祝你好运