我正尝试创建一个通过套接字与本地服务器进行通信的Android应用程序。通信使用JSON传递简单的命令和字符串中的数据。客户端应该不断监听来自服务器的传入消息,并在收到新数据时更新用户界面。Android监听来自服务器套接字的消息
所以我创建了一个网络服务,这是一个在后台运行的绑定服务。从我的活动绑定到服务并接收服务对象的实例。服务对象包含允许我将命令发送到服务器的实例方法。
我的问题是,我如何使我的服务不断侦听来自服务器的消息,而不会阻止将消息发送到服务器的可能性?
private Socket socket = null;
private PrintWriter out = null;
private BufferedReader in = null;
private Listener listener;
private String host = "10.0.1.4";
private int port = 3000;
public NetworkService()
{
try {
if (socket == null)
{
socket = new Socket(this.host, this.port);
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
if(listener == null)
{
listener = new Listener();
Thread thread = new Thread(listener);
thread.start();
}
} catch (Exception e) {
// ...
}
}
}
public class Listener implements Runnable
{
@Override
public void run() {
try {
String line = null;
while((line = in.readLine()) != null)
{
// Do something. Never gets here
}
} catch (Exception e) {
// ...
}
}
}
笏你的意思。做ü希望在应用程序正在运行或在特定时间段或当应用程序处于静音模式(当应用程序正在运行背景)... – Sniper 2012-02-13 10:21:08
好了,我需要的服务是可用来运行这些程序,每当我正在使用应用程序。我需要能够发送简单的字符串命令到服务器,我需要能够从服务器接收数据。 – 2012-02-13 10:26:18
你想获得的反应形式的服务器,直到您的应用程序的结束或在特定时间段.. – Sniper 2012-02-13 10:32:26