gpt4 book ai didi

java - Android 到处传递 Context

转载 作者:行者123 更新时间:2023-11-29 07:41:37 24 4
gpt4 key购买 nike

我开发了一个 Android 应用程序,(对我来说)它太丑了,我很确定我的方法是错误的。

我有一堆 fragment Activity 和很多类,如异步任务、业务规则等。特别是,我有一个名为 PropertiesReader 的类,用于读取属性文件。我在很多地方使用这个类,例如 fragment 和业务规则。

public class PropertyReader {

private Properties properties;

public PropertyReader(Context context){
super();
try {
properties = new Properties();
properties.load(context.getResources().getAssets().open("badass.properties"));
} catch (IOException e){
Log.e("Error", "Error opening properties file", e);
}
}

public String getValue(String key){
return properties.getProperty(key);
}
}

在我使用这个类的每个地方,我都会做类似的事情:

 PropertyReader bla = new PropertyReader(this); //or new PropertyReader(context);

我想知道处理需要构建上下文的类的最佳方法是什么。在我看来,每个构造函数都有一个 Context 参数是非常丑陋的。

有什么想法吗?

提前致谢。

最佳答案

创建一个单例,并在创建时保存应用程序上下文。

它看起来像这样:

public class PropertyReader {

private static PropertyReader ourInstance = new PropertyReader();
private Context mContext;

public static PropertyReader getInstance() {
return ourInstance;
}

private PropertyReader() {
}

public void loadProperties(Context context) {
mContext = context;
try {
properties = new Properties();
properties.load(context.getResources().getAssets().open("badass.properties"));
} catch (IOException e){
Log.e("Error", "Error opening properties file", e);
}
}

}

当您的应用程序启动时,您可以执行以下操作:

PropertyReader.getInstance().loadProperties(getApplicationContext());

然后您就可以在其他任何地方访问您的 PropertyReader:

PropertyReader.getInstance().getValue(key);

关于java - Android 到处传递 Context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29547791/

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