java - 检查一个 Activity 是否与另一个 Activity 处于 Activity 状态

标签 java android android-activity activity-lifecycle activity-finish

我的应用程序中有这样的流程:

对于新用户:

启动屏幕 --> 登录 Activity --> 主页 Activity

对于已经注册的用户:

启动画面 --> 主页 Activity

基本上,启动屏幕有一个 if else 来决定转到哪个 Activity 。用户首次登录后,他的状态将保存在首选项变量中,以便启动屏幕决定下次不打开登录 Activity 。

现在的情况是这样的。如果新用户登录并转到主页 Activity ,然后注销。他被重定向到登录屏幕,这几乎是应该发生的事情。但是,如果现有用户打开该应用程序,他会看到启动屏幕并直接移至主页 Activity 。现在,如果用户注销,他就会退出该应用程序。发生这种情况是因为登录 Activity 没有创建任何实例,因此完成主页 Activity 就完成了整个应用程序。注销实际上完成了主页 Activity ,自然应该打开最后一个 Activity Activity 。但这并没有发生。

我想要做的是,我想要实现一个逻辑来检查登录 Activity 是否可用。如果可用,则将调用 finish(),否则将通过 Intent 调用登录 Activity 。

请告诉我如何实现这一目标。

P.S:我的应用程序使用带有自定义操作栏的自定义主题。如果我同时调用 finish 和 Intent 或者使用标志来清除现有 Activity ,则会出现奇怪的过渡效果,瞬间显示黑色标准操作栏,从而造成糟糕的用户体验。

最佳答案

Now if the user logs out, he gets out of the app. This happens because the Login Activity does not have any instance created and thus finishing the Home Activity finishes the whole app.

如果我理解您的问题,为什么不在用户单击注销按钮后手动调用登录 Activity

这就是我一直对像你这样具有流量的应用程序所做的事情

关于java - 检查一个 Activity 是否与另一个 Activity 处于 Activity 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26905138/

相关文章:

java - Hibernate 乐观锁定中的版本控制

java - 运行使用 cl-cppre 的 ABCL 代码

android - 在 GridView 中使用 scrollTo()

java.lang.ClassCastException : android. support.v7.widget.AppCompatButton 无法转换为 android.support.design.widget.FloatingActionButton

java - 从一个页面导航到另一个页面( View 范围)时在支持 bean 中设置属性不起作用

java - 如何从webview下载文件

android - Intent 在ActivityResult 上返回空值

java - 当我尝试在 Android 应用程序上切换 Activity 时,我出现白屏

android - 没有前景的应用程序间通信的最佳方法?

java - 无法删除文件 Java