1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Periodische HTTP-Requests schicken - WIE?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von sem_thesis, 20.05.2011.

  1. sem_thesis, 20.05.2011 #1
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    111
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    Phone:
    Nexus One
    Ich schreibe eine Facebook-basierte App, welche nach Login User-Daten von Facebook sammelt.
    Dabei stütze ich mich auf der Facebook SDK Framework, welche Login/Logout/HTTP-Requests schicken und empfangen managt (mithilfe der Klasse AsyncFacebookRunner.java und Facebook.java).

    Ich muss nur 2 Instanzen der beiden Klassen erstellen und die gegebenen Funktionen benutzen.

    Mein Code macht folgendes:
    1) FB Login
    2) Beim Klick auf Menüoption wird ein HTTP-Request geschickt und in der entsprechenden Klasse bearbeitet.


    Hier ist das Beispiel um User-Event zu sammeln:
    Code:
        private Facebook mFacebook;
        private AsyncFacebookRunner mAsyncRunner;
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int itemId = item.getItemId();
            switch (itemId) {
    .......
            case MyClassName.GET_EVENTS:
                this.mAsyncRunner.request("me/events", new EventRequestListener());
                break;
           }
    }
    
    
         private class EventRequestListener implements RequestListener {
     
            @Override
            public void onComplete(String response, Object state) {
                try {
                    // process the response here: executed in background thread
                    Log.d(TAG, "Event Response: " + response.toString());
                    final JSONObject json = new JSONObject(response);
                    JSONArray d = json.getJSONArray("data");
     
                    Log.d(TAG, "Number of Events: " + d.length());
                    
                    for (int i = 0; i < d.length(); i++) {
                        JSONObject event = d.getJSONObject(i);
                        FbEvent newEvent = new FbEvent(event.getString("id"),
                                event.getString("name"),
                                event.getString("start_time"),
                                event.getString("end_time"),
                                event.getString("location"));
                        events.add(newEvent);
     
                    }
     
                } catch (JSONException e) {
                    Log.w(TAG, "JSON Error in response");
                }
            }
             
    
    ... Other RequestListener Methods...
    
    }
    
    
    Was der Code macht ist, er erstellt beim MenüOptionklick eine Instanz der EventRequestListener-Klasse, welche den HTTP-Response in eine Klasse hineinschreibt...


    Langer Rede, kurzer Sinn.
    Was ich will ist das diese Instanz nicht per Mausklick sondern periodisch (sagen wir jede 4h kreeiert wird und Daten sammelt).
    Ist das möglich? Wenn ja, wie?
     
  2. sem_thesis, 20.05.2011 #2
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    111
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    Phone:
    Nexus One
    Kann ich vielleicht den HTTP-Request zu einem Intent umwandeln?
    Danach könnte ich einen periodischen Alarm mit AlarmManager.setrepeating() setzen, der immer wieder diesen Intent aufruft.

    Geht das?
     

Diese Seite empfehlen