Socket Kommunikation will nicht nach While {}

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von moelski, 19.03.2011.

  1. moelski, 19.03.2011 #1
    moelski

    moelski Threadstarter Junior Mitglied

    Beiträge:
    26
    Erhaltene Danke:
    1
    Registriert seit:
    19.03.2011
    Moin !

    Ich versuche grade eine kleine Anwendung zu schreiben. Die soll nur von einem TCP Server Daten empfangen.

    Mein Code besteht im Grunde nur aus einer Klasse und der Methode OnCreate:
    Code:
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            try {
                setContentView(R.layout.main);
                
                myView1 = (TextView)findViewById(R.id.textfield1);
                
                Socket s = new Socket("xxx.xxx.xxx.xxx", 9050);
                BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
                //read line(s)
                String st = input.readLine();
                myView1.setText("Connection OK : " + st);
                
                //outgoing stream redirect to socket
                OutputStream out = s.getOutputStream();
                PrintWriter output = new PrintWriter(out);
                output.println("This comes from the Android LV :)\n\r");
                output.flush();
               
                while (true)
                {
                    st = input.readLine();
                    st = "Data " + st + " END";
                    st = st.trim() + "\n";
                    myView1.setText(st);
                }
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                myView1.setText("Connection bad : " + e.toString());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                myView1.setText("Connection bad : " + e.toString());
            }
        }
    Der Code funktioniert soweit wenn ich nicht den While Block unten nutze. Dann kriege ich eine Message vom Server und sende ein Feedback zurück. Klappt alles super.
    Nehme ich die While Schleife in Betrieb dann wird mein Textfeld nicht mehr beschrieben. Die Daten werden aber empfangen. Das kann ich im Debugger sehen.

    Auch ein myView1.Invalidate(); hilft nicht.

    Hat jemand eine Idee warum die While Schleife da so einen Stress macht? Das ist sicher nicht sauber so, aber ich wollte nur mal checken ob das generell klappt.

    Grüße Dominik
     
  2. v Ralle v, 19.03.2011 #2
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Pack das nicht in die onCreate Methode. Soetwas macht man nicht in dem UI Thread. Schau dir dazu am besten mal die Klasse Asynctask an. Ich bin mir ziemlich sicher, dass das dein Problem ist.
     
  3. moelski, 19.03.2011 #3
    moelski

    moelski Threadstarter Junior Mitglied

    Beiträge:
    26
    Erhaltene Danke:
    1
    Registriert seit:
    19.03.2011
  4. v Ralle v, 19.03.2011 #4
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Naja, so erstaunlich ist das nicht wirklich... ^^ Aber schön, dass es klappt :)
     
  5. moelski, 19.03.2011 #5
    moelski

    moelski Threadstarter Junior Mitglied

    Beiträge:
    26
    Erhaltene Danke:
    1
    Registriert seit:
    19.03.2011
    Moin !

    Für dich evtl nicht, aber für einen Einsteiger wie mich schon :p

    Nuja, ich habs nun erstmal grundlegend am laufen mit dem AsyncTask.
     

Diese Seite empfehlen