android - 能够在完成时返回到堆栈上的最后一个活动的验证屏幕,并在后按时完成整个应用程序
问题描述
我正在为在我的应用程序中创建验证屏幕的概念而苦苦挣扎(它正在刷新状态并要求用户提供有效的 PIN)
以下是该屏幕的两个重要导航要求:
- 我希望在 PIN 有效时关闭验证屏幕,并在完成返回堆栈上最后打开的屏幕时关闭
- 当用户在该验证屏幕上点击后按时,我想关闭整个应用程序(以便后台没有任何内容)。因此,整个先前的屏幕堆栈都已关闭/完成
我尝试过的:
似乎能够在活动完成时关闭整个应用程序(与所有以前的活动/屏幕),最后一个活动应该在附加标志android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK
设置为的情况下启动Intent
但是,当验证屏幕以有效的 PIN 传递(并且验证活动通过调用完成)时,我如何保留整个先前的堆栈FragmentActivity.finish()
?
另一个概念是使用finishAffinity()
,但是当之前的屏幕属于我的应用程序中的一些不同的亲和进程时,如何处理这种情况?我想关闭所有当前的亲和进程(当有多个时)
解决方案
您可以控制用户单击背面的时间,因此对于流程成功的情况,您只需调用 finish() 即可完成。对于用户点击后退按钮的流程,您可以做的是启动一个新的虚拟活动,但将其称为单个顶部,删除之前和此类活动的创建方法上的所有其他活动,您可以调用 finish()。
这不是一个优雅的解决方案,但它应该可以工作
推荐阅读
- c# - 在 .net 中使用 SAS 密钥下载 Azure Blob
- c++ - C++ 数据类型、它们的内存使用情况以及指针与它们的关系
- c++ - 在线程中使用 std::vector 迭代器
- pytorch - Torchlib C++ Conv2D 未按预期工作
- java - Java Spring REST API - JSON 显示在邮递员中,但在测试中没有“看到”
- android - 无法为 retrofit2.Call 创建转换器
尝试使用 Retrofit 下载文件时 - latex - 添加表后maketitle命令出现问题
- google-sheets - 谷歌表格根据草稿中的选择编号重新排序数据
- android - ParsePush MasterKey 未经授权
- angular - Laravel/Angular - Auth::user() 返回 null