畫面更新只能在主執行緒中,因此如果在其它執行緒中有需要更新畫面,那就需要回到主執行緒。
從其它執行緒回到主執行緒,需使用 Handler。
主執行緒(UI執行緒)不允許執行需要長時間的動作,否則會產生 ANR(Application is Not Responding),因此就要使用其它執行緒,但結果需要更新畫面,因此就要用 Handler。
public class TcpClient {
private Collection listeners;
...
public void addEventLister(TcpClientListener listener) {...}
public void removeEventLister(TcpClientListener listener) {...}
private void event_ReceiveData(byte[] RcvData) {...}
private void event_notifyListeners(TcpClientEvent event) {...}
private void hasReceivedData(byte[] RcvData) {
event_ReceiveData(RcvData);
}
...
}
class TcpClientEvent extends EventObject {
...
}
interface TcpClientListener extends EventListener {
...
}
public class ControlSystem {
private TcpClient tclCli = new TcpClient();
public ControlSystem() {
tcpCli.addEventLister(new TcpClientListener1());
}
...
}
private class TcpClientListener1 implements TcpClientListener {
@Override
public void TcpClientEvent(TcpClientEvent event) {
...
}
}

