2016-09-27 5 views
0

A VolleyRequest wird nicht ordnungsgemäß in Service verarbeitet.Dienst, der versucht, eine Anforderungsantwort mit der Volley-Bibliothek zu verarbeiten, aber Callback wird nie aufgerufen

public class StatusService extends Service { 
    private static final String TAG = StatusService.class.getSimpleName(); 

    @Override 
    public void onStart(Intent intent, int startId) { 
    // check the global background data setting 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
    if (!cm.getBackgroundDataSetting()) { 
     stopSelf(); 
     return; 
    } 

    RequestQueue mRequestQueue; 
    { // setup mRequestQueue 
     // Instantiate the cache 
     Cache cache = new DiskBasedCache(getCacheDir(), 1024 * 1024); // 1MB cap 

     // Set up the network to use HttpURLConnection as the HTTP client. 
     Network network = new BasicNetwork(new HurlStack()); 

     // Instantiate the RequestQueue with the cache and network. 
     mRequestQueue = new RequestQueue(cache, network); 

     // Start the queue 
     mRequestQueue.start(); 
    } 

    // do the actual work, in a separate thread 
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, "http://mydomain/something", null, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
     // I am sure the server side is working properly 
     Log.d(TAG, "This never gets called! -> On response: " + response); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
     Log.e(TAG, "error", error); 
     } 
    }); 
    mRequestQueue.add(request); 
    Log.d(TAG, "This will be logged successfully"); 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
    return null; 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
    handleIntent(intent); 
    return START_NOT_STICKY; 
    } 
} 

Die Anfrage wird gesendet, aber die bereitgestellte Callback-Aktion wird nicht aufgerufen. Wenn der Server ausgeschaltet ist, wird der Fehlerrückruf mit TimeOutError aufgerufen. Ist es ein Thread-Problem? Wenn ja, was könnte falsch sein?

Antwort

0

Nicht zu sicher, warum einer aufgerufen werden würde und nicht der andere. Laut der Dokumentation werden die Callbacks im Hauptthread aufgerufen, obwohl dies für Ihr Problem völlig irrelevant ist.

+0

Ich kann nicht verstehen, warum es nicht funktioniert! – FtheBuilder

Verwandte Themen