我正在制作一个实际上包含两个活动的应用程序。
一个将允许用户登录,如果成功完成,将启动网络浏览器(MenuActivity)。
另一个拍照,然后将其上传到服务器(PhotoActivity)。
该Web浏览器将具有一个链接,当按下该链接时,它将以拍照模式加载我的应用程序。
流程通常是这样的:
MenuActivity-> Web浏览器-> PictureActivity,然后重复最后两个步骤。
到目前为止,我已经将启动器活动设置为MenuActivity,然后在OnCreate重写中使用以下代码来完成此操作:
Intent mine = getIntent();
if (mine.getData() != null && !mine.getData().getPathSegments().isEmpty()) {
//retrieve the data here that I need
Intent i = new Intent(this, typeof(PhotoActivity));
i.PutExtra(//add here the data I received);
StartActivityForResult(i, START_PHOTO_INTENT);
}
之后,如果requestCode为START_PHOTO_INTENT,我将覆盖OnActivityResult并发送finish()
这正常工作
我的问题是,当我从网络浏览器启动PhotoActivity时,如果用户(打开时)打开了该应用程序,则MenuActivity显示(应显示),但是当用户按下它时,它将返回到PhotoActivity而不是退出。
有没有一种方法可以更改此行为,以便即使打开了PhotoActivity,如果手动启动该应用程序,PhotoActivity也不会保留在后退堆栈上?
预先感谢您可以提供的任何帮助
编辑:
阅读解决方案上的链接文章以及对该问题的答案后,我得出的结论是,为了执行我想做的事情,我必须将LaunchMode设置为androidmanifest中的singleTask,并覆盖MenuActivity的OnStop并在执行后发送finish() (如果我没有,并且活动在后台,则从网页启动时不会用意图数据触发它)
谢谢大家的帮助
最佳答案
查看Tasks and Back Stack
文档中的Handling affinities章。描述了如何处理。