gpt4 book ai didi

java - 决定从 Application 的子类开始哪个 Activity

转载 作者:行者123 更新时间:2023-11-30 00:13:32 26 4
gpt4 key购买 nike

我有一个简单的应用程序,在我做任何事情之前,我必须检查用户是否登录。为此,我继承了 Application 类,如下所示:

public class GBApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
if (userIsLoggedIn()) {
Intent overviewActivity = new Intent(this, Overview.class);
overviewActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(overviewActivity);
}
}
}

userIsLoggedIn() 返回存储在 SharedPreferences 文件中的 boolean 值。

一切正常,但是当我从 Overview Activity 中返回时,它会将我重定向到默认 Activity (MainActivity),并将其从 AndroidManifest 中删除.xml 文件给出错误。另外,我无法调用 finish(),因为这是一个非 Activity 类。

Overview 类返回后如何终止我的程序?我找到了将值传递给 MainActivity 并从那里调用 finish() 的解决方案。但这似乎很复杂。我还能做什么?

这是我的 application AndroidManifest.xml

中的标记

最佳答案

你的计划会出问题。每次创建流程时,您都会启动一个 Activity ,即使此特定流程不需要该 Activity 也是如此。

显示启动器 Activity (例如响应用户点击主屏幕启动器图标)是为您的应用创建进程的一种方式。但还有很多其他的:

  • 报警管理器
  • JobScheduler
  • 通知
  • 推送消息(例如,来自 Firebase Cloud Messaging)
  • 发送到您从应用导出的 ContentProvider 的请求
  • 发送到您从应用导出的服务的请求
  • list 注册的BroadcastReceiver
  • 用户在概览屏幕中返回到您的任务
  • 等等

在这些场景中,显示此 Activity 都不一定合适。然而,您的代码将显示所有这些 Activity ,因为每当 Android 为您的应用 fork 进程时,您都会显示此 Activity 。

让您的所有 Activity (登录 Activity 除外)查看用户是否已登录,并在需要时将用户路由到登录 Activity 。当用户完成登录并且登录 Activity 结束时,用户将返回到他们试图去的地方,无论是您的启动器 Activity 还是其他一些 Activity(例如,他们在您的应用程序进入后返回到您的任务背景一段时间,因此您的进程已终止,但 Android 会尝试将它们发送回您上次进行的任何 Activity )。

关于java - 决定从 Application 的子类开始哪个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47732768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com