Moin,
ich arbeite gerade an meiner ersten Android App und habe mich schon ein wenig eingefummelt. Nun möchte ich, dass ein Server der App Nachrichten schicken kann, die dann einfach in Form von einer ListView bzw. als Elemente in dieser ListView angezeigt werden.
Folgenden Code habe ich in der App:
Diese Methode ist in der Klasse PushActivity enthalten.
Hier der Server (bzw. der Input-Loop):
So weit, so gut. Wenn ich nun im Server eine Verbindung habe und dann eine Nachricht sende, wird sie auch im ListView dargestellt. Allerdings werden alle folgenden Nachrichten weder vom Listener erkannt noch im View gezeigt.
Hat jemand eine Idee, warum offenbar nur eine Zeile gelesen wird?
ich arbeite gerade an meiner ersten Android App und habe mich schon ein wenig eingefummelt. Nun möchte ich, dass ein Server der App Nachrichten schicken kann, die dann einfach in Form von einer ListView bzw. als Elemente in dieser ListView angezeigt werden.
Folgenden Code habe ich in der App:
Java:
private void startListener() {
PushActivity.isRunning = true;
final Handler handler = new Handler();
Runnable listenerRunnable = new Runnable() {
@Override
public void run() {
try {
ServerSocket server;
BufferedReader reader;
server = new ServerSocket(22446);
Socket pushServer = server.accept();
reader = new BufferedReader(new InputStreamReader(pushServer.getInputStream()));
String input;
while (!(input = reader.readLine()).equals("exit")) {
System.out.println("Received line from push server: " + input);
final String tmp = input;
handler.post(new Runnable() {
public void run() {
PushActivity.addListContent(tmp);
}
});
}
}
catch (IOException ex) {
ex.printStackTrace();
}
}
};
Thread listenerThread = new Thread(listenerRunnable);
listenerThread.start();
}
Diese Methode ist in der Klasse PushActivity enthalten.
Hier der Server (bzw. der Input-Loop):
Java:
Scanner input = new Scanner(System.in);
String inputLine = "";
do {
System.out.print("> ");
inputLine = input.nextLine();
if (!inputLine.equals("exit")) {
for (String ip : ipAddresses) {
Socket target = new Socket(ip, 22446);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(target.getOutputStream()));
System.out.println("Sending " + inputLine + " to " + ip);
writer.write(inputLine + "\n");
writer.flush();
}
}
} while (!inputLine.equals("exit"));
input.close();
So weit, so gut. Wenn ich nun im Server eine Verbindung habe und dann eine Nachricht sende, wird sie auch im ListView dargestellt. Allerdings werden alle folgenden Nachrichten weder vom Listener erkannt noch im View gezeigt.
Hat jemand eine Idee, warum offenbar nur eine Zeile gelesen wird?