试试吧:
@Override
public void connStateChange(ClientHandler clientHandler) {
final ClientHandler temporaryHander = clientHandler;
runOnUiThread(new Runnable() {
public void run() {
tv.append(temporaryHandler.getIP() + ", " + temporaryHandler.state.toString() + "
");
if (temporaryHandler.state == State.Connected) {
tv.append("Loginserver hittad");
}
}
});
}
顺便说一下,如果你在方法中声明不是anonim类,而是在方法中声明内部类,代码就会变得更具可读性.将其视为模式命令.
更干净和可重用代码的示例.
@Override
public void connStateChange(ClientHandler clientHandler) {
final ClientHandler temporaryHander = clientHandler;
runOnUiThread(new MyRunnableCommand(temporaryHandler));
}
private class MyRunnableCommand implements Runnable {
private ClientHandler clientHandler;
public MyRunnableCommand(ClientHandler clientHandler) {
this.clientHandler = clientHandler;
}
@Override
public void run() {
tv.append(clientHandler.getIP() + ", " + clientHandler.state.toString() + "
");
if (clientHandler.state == State.Connected) {
tv.append("Loginserver hittad");
}
}
}
尽管Runnable实现本身已经膨胀了一些,但代码变得更加可重用且易于阅读.