Stack trace from App

  • Hi Community


    Ich habe meine erste App jetzt im Playstore veröffentlicht und prompt eine Felermeldung zugesand bekommen. Das Problem ist das ich den jenigen kenne aber leider nicht weiss warum es passiert. Fakt ist bei mir läuft die App sowie auch bei anderen Leute die ich kenne. Bei dem wo es nicht läuft ist das Gerät ein Table mit einer 3.x Version.


    Kann man im Stacktrace erkennen warum es ausgerechnet bei ihm nicht läuft ?


    Hier das Trace:



    java.lang.RuntimeException: Unable to start activity ComponentInfo{de.mw.simracetv/de.mw.simracetv.ProgramActivity}: android.os.NetworkOnMainThreadException
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1815)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831)
    at android.app.ActivityThread.access$500(ActivityThread.java:122)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:132)
    at android.app.ActivityThread.main(ActivityThread.java:4123)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:491)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: android.os.NetworkOnMainThreadException
    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
    at java.net.InetAddress.lookupHostByName(InetAddress.java:477)
    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277)
    at java.net.InetAddress.getAllByName(InetAddress.java:249)
    at org.apache.harmony.luni.internal.net.http://www.protocol.http.HttpConnection.<init>(HttpConnection.java:69)
    at org.apache.harmony.luni.internal.net.http://www.protocol.http.HttpConnection.<init>(HttpConnection.java:48)
    at org.apache.harmony.luni.internal.net.http://www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304)
    at org.apache.harmony.luni.internal.net.http://www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89)
    at org.apache.harmony.luni.internal.net.http://www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292)
    at org.apache.harmony.luni.internal.net.http://www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274)
    at org.apache.harmony.luni.internal.net.http://www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1038)
    at org.apache.harmony.luni.internal.net.http://www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:523)
    at java.net.URL.openStream(URL.java:645)
    at de.mw.simracetv.WebsiteReader.readWebsiteContent(WebsiteReader.java:51)
    at de.mw.simracetv.WebsiteReader.getProgram(WebsiteReader.java:29)
    at de.mw.simracetv.ProgramActivity.onCreate(ProgramActivity.java:28)
    at android.app.Activity.performCreate(Activity.java:4397)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1779)
    ... 11 more



    Danke und Gruß
    Thunder

  • Hi,


    ziemlich weit oben steht "NetworkOnMainThreadException". Die App versucht also Netzwerkzugriffe auf dem Main-Thread auszuführen. Ab Android Honeycomb führt dieser Versuch zu einer Exception. Niedrigere Versionen haben damit kein Problem. Netzwerkoperationen sollten grundsätzlich in einem eigenen Thread laufen, nicht auf dem Main-Thread. Denn wenn Du auf dem Main-Thread arbeitest und das Netzwerk hängt, dann hängt auch die App.



    Also ActivityThread.java Zeile 1815 muss geändert werden.



    new Thread(new Runnable() {
    public void run() {
    //netzwerkoperation
    }
    }).start();

  • Hi JackJack


    Ich melde mich erst jetzt da ich in Urlaub war.


    Danke für deine Antwort, ich wusste nicht das ab 3.0 dies nicht mehr erlaubt ist.


    Habe das jetzt in einem Thread gemacht und scheint auch zu laufen. Kann ich irgendwie warten bis der thread dann fertig ist bevor der nächste Code ausgeführt wird ?


    Danke und Gruß
    Thunder

  • Hi Thunderdome,


    Zitat

    Kann ich irgendwie warten bis der thread dann fertig ist bevor der nächste Code ausgeführt wird ?


    Die Klasse AsyncTask würde sich hier anbieten.




    Mfg Titus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!