2015-05-24 87 views
-1

我在Android服務使用JsonArrayRequest:Android的凌空JsonArrayRequest在服務

public int onStartCommand(Intent intent, int flags, final int startId) { 
    //... 
    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest 
      (Request.Method.GET, url, "", new Response.Listener<JSONArray>() { 

       @Override 
       public void onResponse(JSONArray response) { 
        Log.i("SUCCESS", response.toString()); 
        stopSelf(startId); 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        stopSelf(startId); 

       } 
      }); 
    CORE.getInstance(getApplicationContext()).addToRequestQueue(jsonArrayRequest); 
    Log.i("StationsService", "onStartCommand END"); 
    return START_STICKY; 
} 

運行後我得到stopSelf(startId)異常;:

java.lang.IllegalMonitorStateException: object not locked by thread before wait() 
     at java.lang.Object.wait(Native Method) 
     at java.lang.Object.wait(Object.java:401) 
     at com.omsk.wwtlf.istanbultransportnet.api.services.StationsService$1.onResponse(StationsService.java:42) 
     at com.omsk.wwtlf.istanbultransportnet.api.services.StationsService$1.onResponse(StationsService.java:36) 
     at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65) 
     at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
     at android.os.Handler.handleCallback(Handler.java:615) 
     at android.os.Handler.dispatchMessage(Handler.java:92) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4745) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
     at dalvik.system.NativeStart.main(Native Method) 

你能勸有道停止來自Volley的服務?

回答

0

作爲請求不是 「」(空字符串)通jsonarray

public int onStartCommand(Intent intent, int flags, final int startId) { 
//... 
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest 
     (Request.Method.GET, url, <jsonarray-object>, new Response.Listener<JSONArray>() { 

      @Override 
      public void onResponse(JSONArray response) { 
       Log.i("SUCCESS", response.toString()); 
       stopSelf(startId); 
      } 
     }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       stopSelf(startId); 

      } 
     }); 
CORE.getInstance(getApplicationContext()).addToRequestQueue(jsonArrayRequest); 
Log.i("StationsService", "onStartCommand END"); 
return START_STICKY; 

}

+0

我刪除從構造此參數,JsonArrayRequest jsonArrayRequest =新JsonArrayRequest (Request.Method.GET,網址,新的Response.Listener .... 異常仍然是一樣的。 – WWTLF

0
@Override 
protected Map<String, String> getParams() throws AuthFailureError { 
    HashMap<String, String> params = new HashMap<String, String>(); 
    params.put("name", "value"); 
    return params; 
} 
then make new constructor : 
public PostJsonArrayRequest(String url, Response.Listener<JSONArray> listener, Response.ErrorListener errorListener) { 
    super(Method.POST, url, null, listener, errorListener); 
}