2014-01-07 69 views
1

我目前正在解析一個web文件,然後在完成時設置5個textview值,但是,每當活動關閉並重新打開時,它需要再次訪問頁面解析並顯示值,我如何防止它不得不?防止每次打開活動時都必須加載TextViews?

它應該指出,數據變化相當有規律,所以我不能簡單地保存價值永遠。

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

參見[傳輸數據使用同步適配器(http://developer.android.com/training/sync-adapters/index.html) – ramaral

回答

0

也許你應該把你TextViews在OnCreate中,這裏是一個參考圖片:

Process lifespan

這顯示了不同的模塊被加載,並在一個不錯的主意是把你的模塊不總是需要重新加載。

圖像是由另計算器線程貸款,在這裏:Difference between onCreate()and onStart()

+0

這就是它的確切位置,在OnCreate – Broak

0

您可以使用sharedPreferences。使用布爾值來表示不希望頁面再次被解析並保存您獲取的textView文本。現在每次打開活動時,檢查該布爾值是否爲真,如果是,請從sharedPreference中取值,並將它們分配給textViews。

如果布爾值爲false,則解析頁面。每當你再次解析頁面時,用新的值替換舊的值。這樣你就不必一次又一次解析頁面。

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 
} 
+0

問題是則確定當偏好應該被刪除以獲得新的價值。 – Broak

+0

如果您想要與網絡進行一些實時連接,您應該使用推送服務,否則您可以使用aSyncTask來同步每次您認爲適合的數據。 – Aiapaec

相關問題