Beiträge von LGD

    Da ich mitlerweile auf eine gute Library umgestiegen bin, welche mir den ganzen Kram mit dem extra Async - Task spart, kam nun das erste Problem.
    Damals setzte ich den Header so:

    Java
    httpPost.setHeader("Authorization", "Basic " + base64Encoded);
    httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");


    (Twitter API)


    und den Entity so:

    Java
    httpPost.setEntity(new StringEntity("grant_type=client_credentials"));

    Jedoch habe ich Probleme damit, dass mit der Library zu machen. Es gibt zwar die: addHeader Funktion, allerdings bekomme ich immer die Fehlermeldung: Bad request
    Dazu kommt, dass eine Funktion wie addEntity oder setEntity fehlt. Ich denke allerdings, dass das doch bestimmt irgendwie funktioniert:



    Mit Google habe ich keine brauchbaren Ergebnisse gefunden, villeicht benutzt / kennt jemand diese Library & weiß mir zu helfen.



    Android Asynchronous Http Client




    http://loopj.com/android-async-http/

    ist der service denn an deine app gebunden?
    ich kann mir vorstellen das android aus memoryleak präventionsgründen ungebundene services nach einer gewissen zeit einfach killt.

    Ich starte den Service aus der App (BroadcastReceiver) heraus, ja. Das habe ich auch gelesen, aber liegt das dann an meinem Handy?

    Ja, sind 5 Sekunden, mein Fehler, sry :D
    Habe genau das benutzt in einer App, um Daten von einem Server abzurufen und Notifications eventuell zu erstellen und mit dieser Methode läuft es einwandfrei, auch noch nach Tagen. Das ganze noch mit nem BroadcastReceiver der auf das Starten des Gerätes anspringt und schon ist es auch "Neustart-Sicher" :D
    Der Service läuft ja immer, wird also nicht getötet und kann somit den AlarmManager "verwalten"

    Habe es nun eine Woche lang getestet. Jedoch wurde der Service nach einige Zeit immer beendet. Selbst START_STICKY bringt nichts und bei onDestroy hilft auch ein sendBroadcast nichts....
    Denn irgendwie scheint das direkte neustarten, durch einen BroadcastReceiver auch nicht immer zu funktionieren.

    logischerweise nicht. In onSuccess kommt als parameter response das ergebnis deiner ausführung, rein. Dieses bytearray muss dann noch in eine geeignete Form gebracht werden.

    Das habe ich schon alles. Ich will nur unter onSucess etwas returnen, dass dann auch unter public Boolean hasToStop() abgerufen wird.


    Also so ungefähr:



    Oder halt so, dass er erst downloadet & somit den Wert setzt und dann den Wert returnt:

    Ich kenn mich mit dieser thirdparty lib nicht aus, das ist kein Android interner Quellcode. Am besten fragst du da beim entwickler der bibliothek nach, ob er eine möglichkeit bietet die ergebnisse aus dem Thread in den UI-Thread zu reichen.


    Edit: Ich hab nur mal kurz auf seine Seite gelunzt (dein link ist übrigens kaputt)

    Da sieht man doch schon, die methoden die du implementieren musst

    Das habe ich auch, das Problem ist nur, dass ich das return-Statement von public Boolean hasToStop() nicht unter onSuccess platzieren kann. (was mein Problem lösen würde)
    Da dann dieser Fehler kommt:


    Zitat von Android-Studio

    Cannot return a value from a method with void result type


    Und ich kann ja nicht schließlich die onSucess Methode verändern?


    Und wenn ich das return-Statement nach den Methoden einfüge (ein public Boolean, den ich dann einfach bei onSucess setze) spuckt er diesen Fehler aus:


    Zitat von Logcat

    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference

    Da er nicht darauf wartet, bis er fertig runterlädt. Und der Boolean ungesetzt bleibt.

    vermutlich läuft downloadData ja in einem eigenen thread. Nutze den von Android zur Verfügung gestellten AsyncTask, da kannst du in der onPostExecute methode deine werte auslesen.

    Ja, also ich benutze den Android Asynchronous Http Client.
    Das Problem ist halt, dass er beim fertigen Download den Boolean evtl. (je nach Download) auf einen Wert setzt.
    Jedoch wartet er erst garnicht darauf, dass er fertig ist und den Wert gesetzt hat. Also wird immer ein leerer Boolean returnt.

    Guten Abend,


    mein Problem ist, dass ich etwas von meinem Server runterladen möchte, was dann ein Boolean auf true setzten soll.
    Seht selbst:


    Java
    public Boolean hasToStop(){        
            downloadData();
            return needToStop;
        }


    Das Problem ist jedoch, dass er nicht darauf wartet bis die Daten runtergeladen sind.
    Ist es irgendwie möglich, dass der Wert erst returnt wird, wenn er fertig gedownloadet hat?

    Ich habe ein Problem, ich bekomme diese Fehlermeldung:


    Zitat von Logcat

    W/System.err﹕ org.json.JSONException: No value for killMessageShow
    W/System.err﹕ at org.json.JSONObject.get(JSONObject.java:389)
    W/System.err﹕ at org.json.JSONObject.getBoolean(JSONObject.java:410)


    Jedoch habe ich keine Ahnung, wie sie zustande kommt.
    Eigentlich, sollte alles in Ordnung sein, oder nicht?



    Habe so etwas auch mal als Service geschrieben, aber ohne Thread mit Sleep.
    Habe dazu den AlarmManager genutzt.
    In diesem Beispiel ruft er alle 5 Minuten die onReceive auf


    Die beiden Methoden Repeat und Cancel kann man natürlich auch in die UpdateService Klasse aufnehmen und von da aus starten



    Welche Rolle spielt denn der Service? Hält er den Timer am leben?
    Denn bis jetzt hatte ich nur Probleme mit dem AlarmManager. Einige Zeit funktioniert er, doch irgendwann hat er einfach aufgehört zu arbeiten. Ohne klaren Grund.


    Aber 1000 * 5 sind doch 5 Sekunden, oder nicht?

    Ich habe aktuell das Problem, dass ich alle 5 Sekunden etwas aufrufen
    möchte, in meiner permanent laufenden Service Klasse. Bis jetzt habe ich
    das mit einem Handler versucht, aber das will einfach nicht:



    public class PermaService extends Service {
    public PermaService () {
    }



    private Handler handler = new Handler();



    @Overridepublic IBinder onBind(Intent intent) {
    Log.i("rnc", "PermaService STARTED");
    handler.postDelayed(runnable, 5000);
    throw new UnsupportedOperationException("Not yet implemented");
    }



    private Runnable runnable = new Runnable() {
    @Overridepublic void run() {
    Log.i("rnc", "PermaService STARTED");
    handler.postDelayed(this, 5000);
    }
    };





    }

    Ich möchte einen String aus einem JSONObject (welches keinen Namen hat)
    bekommen. Dieses JSONObject ist jedoch in einem Array (mit Namen).
    Dieser Array liegt wiederrum in einem Object welches in einem Array
    liegt.



    Das sieht dann so aus:
    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/grafik781narlmk6.png]



    Kann mir einer helfen? Zum "parsen" benutze ich die Standartvariante, also mit .getString - getJSONObject etc.!



    Vielen Dank

    Guten Abend,


    ich bin relativ neu hier und habe das Problem, dass mit meinem Code einfach nichts passiert...
    Die Log's werden nicht ausgeben, was heißen muss, dass es funktioniert. Der Text verändert sich aber nicht!


    Code:



    Ich hoffe wirklich, jemand kann mir helfen....