Network im Main Activity

  • Hallo zusammen,


    Ich habe ein kleines Problem bei meiner App, ich möchte gerne mit der RCONed API via App an einen HL-Server Befehle senden, aber wenn ich versuch das in der Main Activity zu machen dann crasht die App mit "NetworkOnMainThreadException".
    Hätte vielleicht jemand eine Idee wie ich das machen könnte?


    Hier mein Code :



    http://pastebin.com/qbBdySyA



    Gruß,
    Kia.

  • Das Problem ist, dass du keine Netzwerkanwendungen in der Main machen sollst/darfst. Mache einfach eine neue Klasse in der dein Netzwerkprogramm quasi drin ist und erzeuge diese neu beim Aufruf, damit es Parallel als eigener Thread läuft.

  • Du machst folgendes: Du erstellst eine Klasse.
    public class rconbefehle {
    public static void main(){


    • try {

    • Rcon.send(28555, "127.0.0.1", 27017, "password", "say Hallo");

    • } catch (SocketTimeoutException e) {

    • e.printStackTrace();

    • } catch (BadRcon e) {

    • e.printStackTrace();

    • } catch (ResponseEmpty e) {

    • e.printStackTrace();

    • }

    • }
      }




      Und dann in deiner Main machst du:


      new rconbefehle();

  • Alles klar, vielen Dank.
    Fehler sind verschwunden. :)
    Das senden des Befehls via RCON funktioniert leider trotzdem noch nicht, liegt aber wahrscheinlich an der API, ist ja eigentlich auch nicht für Android sondern für PC.

  • Das Problem ist, dass du keine Netzwerkanwendungen in der Main machen sollst/darfst. Mache einfach eine neue Klasse in der dein Netzwerkprogramm quasi drin ist und erzeuge diese neu beim Aufruf, damit es Parallel als eigener Thread läuft.

    Definitiv falsch. Das hat absolut nichts mit der Activity zutun. Seit Android4.0 ist es nicht mehr gestattet das der MainTHREAD gleichzeitig der networkthread ist. das heißt du brauchst keine neue activity sondern einfach einen neuen thread für die netzwerksachen, ich empfehle dir mal asynctask anzuschauen =)

  • Mit Aussagen wie 'definitiv falsch' wäre ich ganz vorsichtig. ;)

    Das Problem ist, dass du keine Netzwerkanwendungen in der Main machen sollst/darfst. Mache einfach eine neue Klasse in der dein Netzwerkprogramm quasi drin ist und erzeuge diese neu beim Aufruf, damit es Parallel als eigener Thread läuft.


    [...]
    Seit Android4.0 ist es nicht mehr gestattet das der MainTHREAD gleichzeitig der networkthread ist. das heißt du brauchst keine neue activity sondern einfach einen neuen thread für die netzwerksachen, ich empfehle dir mal asynctask anzuschauen =)


    Falsch ist an Nikke1994s Aussage höchstens, dass er das Thread hinter Main vergessen hat. Doch aus der Beschreibung geht hervor, dass ihr beide dasselbe meint. B-)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • falsch, denn er schrieb "Mache einfach eine neue Klasse in der dein Netzwerkprogramm"


    das ist einfach grundlegend falsch, eine neue klasse ändert nix an dem threadverhältnis


    Nein, er schrieb 'Mach einfach eine neue Klasse' und tue Dinge', damit es parallel in einem anderen Thread läuft'.


    Die Sache mit der Klasse ist erst einmal eine gute Idee im Sinne der Kapselung und alles andere als 'grundlegend falsch'.
    Der wichtige Punkt mit dem anderen Thread ist ebenfalls erwähnt.


    Unvollständig ausgedrückt, ja. Schwammig ausgedrückt, ja. Missverständlich ausgedrückt, ja.
    Dennoch weder grundlegend noch definitiv falsch.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

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