2016-03-21 20 views
-1

我在onresume()中調用web服務以從服務器獲取數據..問題是如果用戶最小化並再次打開該應用程序,它將調用Web服務來獲取數據。我不想在這種情況下再次加載數據。在這種情況下加載數據的最佳方式是什麼?在onresume中從​​webservice加載數據

@Override 
protected void onResume() { 
lAttendence= getAttendence ('goku' ,'20/mar/2016' ,'21/mar/2016'); 
EtAtendence.setText(lAttendence) 
    super.onResume(); 
} 




public String getAttendence(String pStuid, String pFromdate, String pTodate){ 
    final String SOAP_ACTION = "http://adad.org/attendenceDetail"; 
     final String METHOD_NAME = "attendenceDetail"; 
     final String NAMESPACE = "http://xxxx.org/"; 
     final String URL = "http://xxxxx.in/service.asmx"; 


     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);   
     request.addProperty("pStuID", pStuid); 
     request.addProperty("pFromDate",pFromdate); 
     request.addProperty("pTodate",pTodate); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.dotNet = true; 
     envelope.setOutputSoapObject(request); 
String result=""; 
     HttpTransportSE ht = new HttpTransportSE(URL); 
     try { 
     ht.call(SOAP_ACTION, envelope); 
      Object responses = envelope.getResponse(); 
      result=responses.toString(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

return result; 
} 
+1

請更具體一些,並顯示一些代碼。 – barq

+0

看看加載程序模式 –

回答

0

也許你可以使用保存信息的單例,或者使用SharedPreferences並將信息保存在那裏。在我的情況下,我使用的是單身人士,但我讀到SharedPreferences是一種更好的做法。單身人士是一個內部只有一個實例的對象,一個私有構造函數和一個返回內部實例的getInstance方法。使用屬性來保存信息。 例子:

piblie class singleton{ 
private String oneString; 
private singleton instance; 
private singleton(){} 
public static initialize(){instance=new singleton();} 
public static singleton getInstance(){ return instance;} 
public void setString(String s){ oneString=s;} 
public String getString(){return oneString;} 
} 

你應該在的onCreate()使用來自應用程序,把這個類tath EXTENS:

singleton.initialize() 

對於SharedPreferences:http://developer.android.com/intl/es/reference/android/content/SharedPreferences.html

編輯:如果ti只適用於String,你應該使用SharedPreferences 類似這樣的:

String AppName="your_app_name"; 
    String theString=""; 
    SharedPreferences shared=getSharedPreferences(AppName, 0); 
    if(!shared.contains("your_saved_thing_name")) 
    { 
     SharedPreferences.Editor editor =shared.edit(); 
     editor.putString("your_saved_thing_name",webserviceCall()); 
     editor.commit(); 
    } 
    theString=shared.getInt("your_saved_thing_name", webserviceCall()); 
+0

如果它是一個對象數組我們可以做什麼?...謝謝你的回答 – sunilkarkala

+0

我認爲你也可以使用SharedPreferences,但我從來沒有這樣做。我使用單例作爲數組,而不是示例中的oneString,如果你想要的話,你可以使用任何你想要的和多於一個 – DonLeopardo

相關問題