gpt4 book ai didi

java - 业务对象中的应用程序上下文

转载 作者:行者123 更新时间:2023-12-02 05:27:12 25 4
gpt4 key购买 nike

所以我有一个 Configuration 类,看起来像这样:

public class Configuration {
private static Configuration global;

private String authToken;
//other config fields

public Configuration(Properties props) {
//get config options from properties
}

public static getConfiguration() {
if (global == null) {
Properties props = ....
global = new Configuration(props);
}

return global;
}

public String getAuthToken() {
if (authToken == null) {

//NEED context here
FileInputStream fis = context.openFileInput("fileName");
//read in auth token
}

return authToken;
}
}

评论中所示的问题是我需要一个Context对象来从android的内部存储机制中读取。看来我唯一的选择是将 Context 作为参数传递给 getAuthToken:

public String getAuthToken(Context c)

但这意味着我还需要将 Context 实例传递给我的业务对象,以便他们可以调用此方法,例如

public class BusinessObject {

private Context c;

public BusinessObject(Context c) {
this.c = c;
}

public void doSomething() {
String authToken = Configuration.getConfiguration().getAuthToken(this.c);
}
}

这看起来真的很困惑。有没有更好的方法来处理这个问题?

编辑:

作为某些上下文的注释(没有双关语),我基本上是尝试存储 API 的身份验证 token ,这样我就不需要在每次启动应用程序时询问用户的凭据(如果 token 没有)尚未过期。

最佳答案

添加一个 Context 静态成员,您可以通过应用启动代码中的某个位置(例如启动 Activity 的 onCreate() 中)调用该成员来初始化该成员。存储 Activity 上下文并不安全,但存储 Application 上下文是安全的。初始化可能如下所示:

public class Configuration {
private static Context sContext;

public static void initContext(Context context) {
if (sContext == null) {
sContext = context.getApplicationContext();
}
}

. . .
}

关于java - 业务对象中的应用程序上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25896603/

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