文字列を受信する UDP サーバーを作成しています。その文字列を変更する必要がありますが、文字列を処理するクラスに文字列を転送する方法がわかりません。次の例外が発生します。
「looper.prepare() を呼び出していないスレッド内でハンドラーを作成できません」
私はアンドロイドの経験がほとんどなく、問題を解決する方法を理解できません.これに関する他の質問はどれも答えを与えてくれませんでした.
public class Server implements Runnable {
@Override
public void run() {
while(!start)
{
//do nothing
}
try {
InetAddress serverAddr = InetAddress.getByName(SERVERIP);
//updateTrack("\nServer: Start connecting \n");
DatagramSocket socket = new DatagramSocket(SERVERPORT, serverAddr);
byte[] serverBuf = new byte[1064];
DatagramPacket packet = new DatagramPacket(serverBuf, serverBuf.length);
//updateTrack("Server: Receiving \n");
socket.receive(packet);
int realSize = packet.getLength();
byte[] RealServerBuf = new byte[realSize];
System.arraycopy (serverBuf, 0, RealServerBuf, 0, realSize);
recived = new String(RealServerBuf);
//updateTrack("Server: " + recived + "\n");
StringHandler stringHandler = new StringHandler();
stringHandler.StringSplitter(recived);
updateTrack("Server: Succeed\n");
} catch (Exception e) {
updateTrack("Server: Error\n" + e);
}
}
}
この問題は、StringHandler.class をインスタンス化する方法と関係があり、UI スレッドに接続されていませんが、その方法がわかりません。