2016-03-21 65 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