我正嘗試創建一個通過套接字與本地服務器進行通信的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