0

Ich habe eine AsyncTask in meiner Aktivität, nenne ich AsyncTask:Daten an den Dienst übergeben - Android?

CallServicesSetQuestion task = new CallServicesSetQuestion(); 
task.execute(rb); 

Dann:

public class CallServicesSetQuestion extends AsyncTask<RequestPackage,String,String>{ 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 

    @Override 
    protected String doInBackground(RequestPackage... params) { 
     Intent response = new Intent(_Context, SendComment_Service.class); 
     response.putExtra("params", params[0]);<===== HERE 
     _Context.startService(response); 


     return content; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
    } 
} 

I RequestPackage an Service senden müssen, aber ich can't.How ich es nicht senden kann .

Hier ist meine RequestPackage:

public class RequestPackage { 
    private String uri; 
    private String method = "GET"; 
    private Map<String,String> params = new HashMap<>(); 

    public String getUri() { 
     return uri; 
    } 

    public void setUri(String uri) { 
     this.uri = uri; 
    } 

    public String getMethod() { 
     return method; 
    } 

    public void setMethod(String method) { 
     this.method = method; 
    } 

    public Map<String, String> getParams() { 
     return params; 
    } 

    public void setParams(Map<String, String> params) { 
     this.params = params; 
    } 

    public void setParam(String key,String value){ 
     params.put(key,value); 
    } 
    public String getEncodedParams(){ 
     StringBuilder sb = new StringBuilder(); 
     for (String key:params.keySet()) { 
      String value = null; 
      try { 
       value = URLEncoder.encode(params.get(key),"UTF-8"); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 
      if (sb.length()>0){ 
       sb.append("&"); 
      } 
      sb.append(key + "=" + value); 
     } 
     return sb.toString(); 
    } 
} 
+0

passieren müssen was ist ein Problem? – USKMobility

+0

Hier response.putExtra ("params", params [0]); Ich kann RequestPackage nicht an den Dienst senden. –

Antwort

1

Make Request Paket Serializable oder wie diese parseable dann können Sie

public class RequestPackage implements Serializable 
{ 
    private String uri; 
    private String method = "GET"; 
    private Map<String,String> params = new HashMap<>(); 

    public String getUri() { 
     return uri; 
    } 

    public void setUri(String uri) { 
     this.uri = uri; 
    } 

    public String getMethod() { 
     return method; 
    } 

    public void setMethod(String method) { 
     this.method = method; 
    } 

    public Map<String, String> getParams() { 
     return params; 
    } 

    public void setParams(Map<String, String> params) { 
     this.params = params; 
    } 

    public void setParam(String key,String value){ 
     params.put(key,value); 
    } 
    public String getEncodedParams(){ 
     StringBuilder sb = new StringBuilder(); 
     for (String key:params.keySet()) { 
      String value = null; 
      try { 
       value = URLEncoder.encode(params.get(key),"UTF-8"); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 
      if (sb.length()>0){ 
       sb.append("&"); 
      } 
      sb.append(key + "=" + value); 
     } 
     return sb.toString(); 
    } 
} 
+0

Wie kann ich Daten vom Dienst abrufen? –

+0

Sie können Handler verwenden, um Daten vom Dienst zu erhalten –

+0

Vielen Dank. Mit Ihrem Guide verwende ich von diesem Link https://www.javacodegeeks.com/2014/01/android-tutorial-two-methods-of-passing-object -by-intent-serializableparcelable.html. –

1

senden Ich glaube, Sie es Serialized

public class RequestPackage implements Serializable { .. } 


Intent response = new Intent(_Context, SendComment_Service.class); 
Bundle bundle = new Bundle(); 
bundle.putSerializable("params", params[0]); 
response.putExtras(bundle); 
_Context.startService(response);