Android后台堆栈

Android后台堆栈,android,back,android-task,Android,Back,Android Task,我有一个在安卓A、B、C、D中有几个活动的应用程序。我有一个关于后台堆栈的问题 A->B->C->D这是一个正常的顺序 我的问题是:当我按下活动D中的后退按钮时,我必须转到活动B,而不是回到活动C。由于ActivityC有一些我想保存的imageView,我不想使用noHistory来销毁ActivityC。这是可能的 A1->B1->C1->D1 后堆栈应为:D1->B1->A1。C1保存了一些imageView,如果C1再次启动,C1中的imageView将包含相同的图像。是否可以只修改Ac

我有一个在安卓A、B、C、D中有几个活动的应用程序。我有一个关于后台堆栈的问题

A->B->C->D这是一个正常的顺序

我的问题是:当我按下活动D中的后退按钮时,我必须转到活动B,而不是回到活动C。由于ActivityC有一些我想保存的imageView,我不想使用noHistory来销毁ActivityC。这是可能的

A1->B1->C1->D1

后堆栈应为:D1->B1->A1。C1保存了一些imageView,如果C1再次启动,C1中的imageView将包含相同的图像。是否可以只修改ActivityC中的代码


谢谢

活动D开始后,您应该在活动C中调用
finish()

startActivity(intent);
finish()
每个活动的句柄onBackPressed()。因此,在反按D后,它将重定向到B,然后类似于A。

使用活动的方法:- 以下是它的工作原理-

启动
活动时使用
startActivityForResult()
方法 当你回去的时候
活动D
-在完成编写之前-

Intent i = getIntent();
setResult(RESULT_OK);
finish();

您的
D
已完成,将调用
c的
onActivityResult()
-保存数据并调用
finish()
使用上述方法,它将转到
B的
onActivityResult()

不要将C添加到Backback,这样在按下back时,它将直接转到B。在每个活动的onBackPressed()中处理转换,并根据时间点进行导航,您希望在活动C中保存图像?@sunil sunny但如果不将C添加到Backbackback,activityC将被销毁,数据将被删除gone@uick学习者有其他方法来做到这一点吗??因为我不能修改ActivityB和ActivityD中的代码,所以我只修改ActivityC中的代码。他不能销毁activity C,因为那里有一个他想保存的图像。他可以使用一些东西将图像与activity分开加载,或者使用毕加索,例如,它会将图像缓存在磁盘上。有方法保存图像吗?如果图像可以保存,finish()就可以了。如果从服务器加载图像,并且不想再次浪费用户流量,可以使用毕加索库,它会将图像缓存在RAM和磁盘中。所以下一次加载会很快。我可以在ActivityC中修改代码吗?类似于在backtack中隐藏ActivityC的东西在D的onBackPressed()中调用B。因此,它将重定向到B而不是C。当您再次调用现有C时,它将显示以前的状态。只需处理每个活动的onBackPressed()就可以从satck调用现有的活动。我认为您应该在答案中添加启动模式。这将很有帮助:因为我正在编写一个库。activityC是一种图书馆活动。我只能在库活动中修改代码。这样,我就不能在B和D中进行更改