TCP Connection mit asyncronem Vorgang

  • Antworten:23
  • OffenNicht stickyNicht beantwortet
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.200

30.03.2013 18:48:36 via Website

Ich war wohl ein bisschen zu voreilig mit den "Funktioniert prima".
context.runOnUiThread(minterfece...);
Fehler:
The method runOnUiThread(void) is undefined for the type Context

LG Pascal //It's not a bug, it's a feature. :) ;)

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.200

30.03.2013 19:28:34 via Website

Hat sich erledigt Lösung:

1activity.runOnUiThread(new Runnable(){
2
3 public void run() {
4 mInterface...();
5 // TODO Auto-generated method stub
6
7 }});

LG Pascal //It's not a bug, it's a feature. :) ;)

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.200

30.03.2013 20:44:57 via Website

Das blöde ist nur, dass ich jetzt nur eine Nachricht senden und empfangen kann, denn der AsyncTask lässt sich ja nur einmal executen.
Mit einer while schleife funktioniert es auch nicht richtig, denn wenn ich in einer anderen Klasse mit dem gleichen Socket eine Nachricht schicke, kommt diese auf dem Server zwar an aber ich bekomme von meinem AsyncTask keine Antwort mehr.
Meine Do in Background()

1protected Object doInBackground(Object... id) {
2
3 // Extract the device ID and the desired status of the device.
4socket = (Socket) id[0];
5 tcc = (TCPActivity) id[1]; //Ist meine Activity aus der der Async Task aufgerufen wird.
6
7
8
9 while(true) //Dieser vorgang soll immer wieder ausgeführt werden
10 {
11
12 try {
13
14 in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
15 // Warte auf ankommende Antworten
16 String finalText = "" ;
17
18 String text = "";
19
20 while ((text = in.readLine()) != null) { // Lese den einkommenden String
21 finalText = finalText + text;
22 }
23 final String recived= finalText;
24 if(recived!= "" && !recived.equals(null)) //Damit der Text nicht leer ist.
25 {
26 tcc.runOnUiThread(new Runnable(){
27
28 public void run() {
29 IntFace.makeToast(runn); //Mein Interface ansteuern und die Variable übergeben
30 // TODO Auto-generated method stub
31
32
33 }});
34 }
35
36
37
38
39 }
40 catch (Exception e) {
41 // TODO Auto-generated catch block
42 e.printStackTrace();
43 }
44 }
45
46
47 }
Vielleich muss ich das ganze dich in einem Thread machen, den ich immer dann ausführe,wenn eine Anfrage gesendet wurde.
Oder wie siehst du das?

LG Pascal //It's not a bug, it's a feature. :) ;)