Beratung zu HintergrundWorker-Thread - SW-Design

V

Viper2000

Ambitioniertes Mitglied
4
Hallo,

ich hab mal ne Frage zum Software-Design einer Funktion meiner Applikation. Ich möchte über einen Netzwerk-Socket in einer Schleife so schnell wie möglich Daten von einem Server lesen und bei jedem Schleifendurchlauf die GUI mit den gelesenen Werten aktualisieren. Ich habe solch eine Schleife inklusive Netzwerk-Funktionalität nun direkt am Handy getestet und (ohne GUI aktualisierung) eine Frequenz von ca. 10 anfragen pro Sekunde erreicht. Das ist super, allerdings blockiert das ganze momentan meinen Main-Thread. Die applikation friert also ein da unentwegt Daten gelesen werden.

Das ganze müsste also während der Laufzeit der App ständig im Hintergrund laufen. Die Gui müsste nach jeder Netzwerk-Abfrage aktualisiert werden und Eingaben die der Benutzer an der Gui vornimmt an den Socket übergeben werden (Der Server wird nämlich nicht nur abgefragt sondern es werden auch Befehle zum Server übertragen die die Art der zurückgelesenen Daten ändern).

Wie sollte ich das Softwaretechnisch umsetzen? Bin für jegliche Hilfe dankbar!

Viele Grüße
Viper :)
 
Zuletzt bearbeitet:
Ähm hoff hab es kapiert was du willst also ..
PHP:
 class DEINE_GUI extends Activity
{
 
Thread th_socket = null;
 
TextView tv_output = new ....;
 
Handler h_guiUpdate = new Handler{
public void incoomingMsg(Message msg){
tv_output .setText(msg.getValu());
}
}
 
public on onCreate(..){
....
 SocketBla run = new SocketBla();
 run.setHandler(h_guiUpdate);
 th_socket = new Thread(run);
 th_socket.start();
...
}
 
class SocketBla extends Runnable
{
 
Handler h
public setHandler(Handler h){this.h = h;}
 
public void run(){
while(true)
{
String input = socket.getInput();
Message msg = new...
msg.value = input;
h.sendMessage(msg);
}
 
}
 
}
}

Also so hab ich es ungefähr immer gelöst. Aber hab noch nicht wirklich viel mit Threads auf Android gearbeitet.

Wenn ich was falsch verstanden habe oder ich hier totalen crap code schreiben, ich lass mich gerne belehren :p

//EDIT Natürlich ist das hier nur pseudo java code :p Methoden namen usw anpassen...
 
Zuletzt bearbeitet:
Wie der Vordermann schon schrub, du willst wahrscheinlich einen Thread integrieren. Services solltest du dir auch anschauen, wenn du etwas immer im Hintergrund laufen haben möchtest!

Ein Link zur Doku Painless Threading | Android Developers

Gruß
Rotesmofa
 
  • Danke
Reaktionen: Viper2000
Danke, Ein "Local Service" klingt genau nach dem was ich haben möchte! Werde mich einlesen und bei Fragen wieder melden.
Schönen Tag an alle!
 

Ähnliche Themen

S
Antworten
0
Aufrufe
592
Sergio13
S
A
Antworten
1
Aufrufe
584
swa00
swa00
W
  • waltsoft
Antworten
3
Aufrufe
723
waltsoft
W
Zurück
Oben Unten