Hallo,
danke für das Beispiel.
Aber komme ich dann nicht wieder in das Problem mit der NetworkinMainThreadExpetion? Es soll ja scheinbar alles was mit Netzwerk zu tun hat in einem extre Thread gemacht werden
So ganz komme ich noch hinter das Multithreading, und in der Tat habe ich vorher fast nur auf Mikrocontrollern auch in Assembler programmiert, alles sequentiell.
Ich weiß auch leider nicht wie ich da an die ganze Sache am besten ran gehen soll.
Ich hatte mir überlegt es generell evtl. so zu machen.
Ich habe einen Main Thread der für das UI usw zuständig ist und bei Bedarf auch Nachrichten an über die Buffer schicken kann.
Zunächst starte ich dann bei Bedarf aus dem UI Thread bei Druck auf einen Button einen neuen Thread, in diesem öffne ich nur den Socket.
Sobald dann der Socket gebunden ist (isBound() ) soll dann ein weiterer Thread aus dem Main Thread aus gestartet werden. In diesem werden dann die Buffer erstellt. Dieser Thread muss dann wohl dauerhaft laufen (Endlosschleife?) und auf Nachrichten vom Server warten.
Vom Main Thread aus muss ich ja auch auf die Buffer bzw den Socket zugreifen können.
Was denkst du darüber? Sollte man das so machen, oder anders?
Eines der Hauptprobleme scheint wohl jetzt zu sein dass ich in den MainThread eine Referenz auf den Socket bringen muss, da ja der Thread für den Socket schnell durchgelaufen ist. Und ansonstne räumt der Garbage Collector ja den Socket auf.
Wäre das hier richtig um eine Referenz in den MainThread zu haben, so dass die Objekte aus dem AsyncTask nicht vom Garbage Collector gelöscht werden?
public class ClientActivity extends Activity {
private IPConnection ipcon;
private Socket Testsocket;
public class IPConnection extends AsyncTask<String, String, IPConnection> {
@Override
protected IPConnection doInBackground(String... message) {
ipcon = new IPConnection();
ipcon.run();
return null;
}
}
}
Alles anzeigen
Danke schonmal
Gruß