0

Ich versuche, eine gemeinsame Webservice-Klasse zu schreiben, wo in jeder der Aktivitäten innerhalb meiner Anwendung auf diese gemeinsame Klasse für Webservice Zeug zeigen muss. Derzeit bin ich stecken zwischen d. den Erfolg/Misserfolg Nachricht an die aufrufende Klasse, Meine aktuelle Implementierung wie unten passieren soll, Ich habe eine Interface-Klasse, wo in I 2 Methoden,Wie erstellt man eine gemeinsame AsyncTask-Klasse für den Webservice-Aufruf in einer Android App?

public void webServiceReqExecutedSuccessfully(); 
public void webSerReqFailed(); 

und jede Webservice calling Klasse implementiert diese Methoden als pro ihre Anforderungen. Und meine gemeinsame WebService-Klasse ist unten wie,

public class WebServiceRequest extends AsyncTask < String, Void, Boolean> 
    {
    
     private static final MediaType FORM_DATA_TYPE = MediaType.parse("application/x-www-form-urlencoded; charset=utf-8");
   
   public enum HTTPServiceTags {
    
      POST_IT, 
      GET_ALL_ITEMS 
     } 

     HTTPServiceTags requestTag; 
     public ATWebServiceRequest(HTTPServiceTags reqTag, Callable <Void> _ServiceResponseSuccess, Callable <Void> _ServiceResponseFailure) { 
      this.requestTag = reqTag; 
     } 

     @Override 
     protected Boolean doInBackground(String...postDataSet) { 
      Boolean result = true; 
      String requestURL = postDataSet[0]; 
      String postBody = getPostBody(postDataSet); 
      Log.d(requestURL, postBody); 
      try { 
      OkHttpClient client = new OkHttpClient(); 
      RequestBody body = RequestBody.create(FORM_DATA_TYPE, postBody); 
      Request request = new Request.Builder().url(requestURL).post(body).build(); 
      Response response = client.newCall(request).execute(); 
      } catch (IOException exception) { 
      result = false; 
      } 
      return result; 
     } 

     @Override 
     protected void onPostExecute(Boolean result) { 
      if (result) { 
      switch (requestTag) { 
      case POST_IT: 
//HOW CAN I NOTIFY/INVOKE webServiceReqExecutedSuccessfully METHOD OF THE CALLING CLASS HERE??? 
      break; 
      case GET_ALL_ITEMS: 
      break; 
      default: 
      break; 
      } 
      } 
     } 
     } 

hier meine Frage nach der Antwort-Service-Aufruf, wie kann ich die Berufung Klasse Interface-Methoden (webServiceReqExecutedSuccessfully()/webSerReqFailed()), von dem Referenzobjekt benachrichtigen/aufrufen ? Jede Hilfe wird im Voraus geschätzt. Danke

+0

Verwenden Interfac e als Rückruf – Rahul

Antwort

0

Erstellen Sie Interface, die als Rückruf verwendet werden.

public interface MyCallBack { 
    void onResult(HTTPServiceTags requestTag); 
} 

In Ihrem Activity Geräte, die

public class Xyz extends Activity implements MyCallBack { 

    @override 
    public void void onResult(HTTPServiceTags requestTag) { 
    // Do your work 
    } 
} 

Pass Schnittstellen- diese Schnittstelle in Ihrem AsyncTask des constructor-

public WebServiceRequest(MyCallBack callBack) { 
    this.mCallBack = callBack; // Assign it to global variable 
} 

Dann in onPostExecute es nennen -

@Override 
protected void onPostExecute(Boolean result) { 
    if (result) { 
    mCallBack.onResult(requestTag); 
    } 
} 
Verwandte Themen