我正在解析一个Web文件,然后在完成时设置5个textview值,但是,每次关闭活动并重新打开它时,它需要再次访问页面解析并显示值,我怎样才能阻止它至?
应该注意到数据会经常变化,所以我不能永远保存这些值。
public void gatherStockDetails(String symb) {
AsyncHttpClient client = new AsyncHttpClient();
client.get("url" + symb + "&f=snpog",
new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
Log.e("KFF-a", response);
stockinfo = response.split(",");
setTextViews(stockinfo[0].replaceAll("[^a-zA-Z0-9.%+ -]+", ""),
stockinfo[1].replaceAll("[^a-zA-Z0-9.%+ -]+", ""),
stockinfo[2].replaceAll("[^a-zA-Z0-9.%+ -]+", ""),
stockinfo[3].replaceAll("[^a-zA-Z0-9.%+ -]+", ""),
stockinfo[4].replaceAll("[^a-zA-Z0-9.%+ -]+", ""));
}
@Override
public void onFailure(Throwable arg0, String arg1) {
super.onFailure(arg0, arg1);
}
});
}
和
public void setTextViews(String Symbol, String Name, String PClose, String Open, String Low) {
final Animation in = new AlphaAnimation(0.0f, 1.0f);
in.setDuration(500);
tvName.setText(Name.replace("Corpora", "Corporation"));
tvName.startAnimation(in);
tvSymbol.setText(Symbol);
tvSymbol.startAnimation(in);
tvSymbol.setText(PClose);
tvPClose.startAnimation(in);
tvLow.setText(Low);
tvLow.startAnimation(in);
tvOpen.setText(Open);
tvOpen.startAnimation(in);
}
很抱歉,我没有提及,这是一个活动片段,因此没有onRestoreInstance状态。
答案 0 :(得分:0)
也许你应该把TextViews放在OnCreate中,这是参考图片:
这显示了加载不同模块的位置,以及一个好主意是放置不需要重新加载的模块。
图片从另一个stackoverflow线程借出,此处:Difference between onCreate()and onStart()
答案 1 :(得分:0)
您可以使用 sharedPreferences 。使用布尔值表示您不希望再次解析页面并保存textView的文本。现在每次活动打开时,检查布尔值是否为真,如果是,只需从 sharedPreference 中取值并将它们分配给textViews。
如果布尔值为false,则解析页面。每当您再次解析页面时,请用新值替换旧值。这样您就不必一次又一次地解析页面。
答案 2 :(得分:0)
也许你可以在SharedPreferences中保存一些标志,这样你就可以验证标志。
public void DataDownloaded()
{
SharedPreferences sharedPreferences = getSharedPreferences();
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("DataDownloaded", true);
editor.commit();
}
public Boolean isDataDownloaded()
{
SharedPreferences sharedPreferences = getSharedPreferences();
return sharedPreferences.getBoolean("DataDownloaded", false);
}
只是在onCreate()和onResume()覆盖方法中进行验证。
if(!isDataDownloaded)
{
//all your cool stuff
}