我的偏好保存在我的xml文件R.xml.my_prefs:
上<EditTextPreference
android:key="host"
android:text="www.whatever.com" />
我想从静态类中读取它:
public class NetworkUtils{
private string PREFERENCE = functionIWouldLikeToHaveToLoadPreferences(R.xml.my_prefs).get("host"); // <--- NO WAY!!!
private static final String USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";
private static URL buildURL(String path) throws MalformedURLException{
return buildURL(path, new HashMap<String, String>());
}
private static URL buildURL(String path, HashMap<String, String> getArgs) throws MalformedURLException{
Uri.Builder builder = new Uri.Builder();
builder.scheme("https");
builder.authority(PREFERENCE);
builder.appendPath("22");
builder.appendPath(path);
for (Map.Entry<String, String> entry : getArgs.entrySet()) {
builder.appendQueryParameter(entry.getKey(), entry.getValue());
}
Uri uri = builder.build();
URL url = new URL(uri.toString());
return url;
}
但看起来我无法从这个课程中获得PREFERENCE,我需要一个活动。没有活动背景的任何方式吗?
该类上有许多静态函数会使用PREFERENCE和其他类似的函数,因此我希望避免不得不一次又一次地将上下文传递给每一个,因为它会让我的生活变得更加复杂。我该怎么办?
答案 0 :(得分:1)
我理解您希望避免将Context
对象传递给每个静态成员。但这是在Android中处理系统相关人员的首选方式。
如果您有Application
课程的孩子,则可以使用NetworkUtils
Context
方法初始化Application.onCreate
。但请记住在相应的Application.onTerminate
方法中发布对全局上下文的引用。
我仍然坚持认为保留Context
对象并不是一个好主意。
您是否曾考虑使用之前已读取的NetworkUtils
对象初始化PREFERENCE
类,该对象来自可以访问Context
值的某个地方。