我扩展了Application
该类以允许我存储应用程序范围的对象。其中一个对象是JSONObject
从应用程序本地的 JSON 文件中读取的。这EnvConfig
是我编写的一个自定义类,它只返回那个 JSON 配置对象。这个ExtendedBase
课程让我可以在全球范围内使用它。
我的问题是,当我进行活动时,我会执行以下操作来获取 config JSONObject
。在其中,我抓取了一个模板并对其JSONObject(pageJSON)
进行了AsyncTask
修改,并将其用作 RESTful API 调用的主体来检索资源。
myApp = (ExtendedBase) getApplicationContext();
JSONConfig = myApp.getConfig();
JSONObject page = JSONConfig.getJSONObject("singlePages").getJSONObject(pageTitle);
JSONObject pageJSON = page.getJSONObject("json");
这样可行。我从 RESTful API 获取资源,然后从自定义类中做同样的事情。pageJSON
在异步任务中从全局可用getApplicationContext()
的 MODIFY中获取pageJSON
,并进行另一个 RESTful API 调用以更新资源。哪个有效。但是当我再次启动该过程时(返回活动并尝试通过获取pageJSON
模板对象进行 API 调用以检索另一个资源),它以某种方式反映了我在进行更新 API 调用时所做的更改。JSONObject
根本不应该更改原始的全局。就像我正在更新全局可用对象而不是JSONObjects
像我认为应该做的那样创建新对象。
有人知道如何解决这个问题吗?
import org.json.JSONObject;
import android.app.Application;
public class ExtendedBase extends Application {
private EnvConfig envConfig;
private JSONObject JSONConfig;
public static Record record = null;
public static Boolean hasSavedRecord = false;
@Override
public void onCreate() {
envConfig = new EnvConfig();
JSONConfig = envConfig.getEnvConfig(this);
super.onCreate();
}
public JSONObject getConfig() {
return JSONConfig;
}
public void setRecord(Record mRecord){
this.record = mRecord;
}
public Record getRecord(){
return record;
}
}