我的重连类,需要拿来就能用。
public class IsAgainConnect implements Runnable {
private static final boolean CONNECT = true;
private static final int WAIT_TIME = 5000;
private WifiLinking wifiLinking = null;
public void run() {
// TODO Auto-generated method stub
reunion();
}
public IsAgainConnect(WifiLinking wifiLinking) {
this.wifiLinking = wifiLinking;
initiate();
}
// run方法
private void reunion() {
while (CONNECT) {
holdTime(WAIT_TIME);
}
}
// 等待时间
private void holdTime(int time) {
try {
Thread.sleep(time);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
sendTestData();
}
// 发送测试数据
private void sendTestData() {
try {
if (wifiLinking.socket != null) {
wifiLinking.socket.sendUrgentData(0xFF);
}
} catch (IOException e) {
handle();
}
}
// 异常处理
private void handle() {
try {
Looper.prepare();
wifiLinking.socket = new Socket(WifiLinking.SERVER_IP,WifiLinking.SERVER_PORT);
Toast.makeText(wifiLinking.context, "已重新与服务器连接!",Toast.LENGTH_LONG).show();
} catch (Exception e1) {
Toast.makeText(wifiLinking.context, "与服务器无连接!", Toast.LENGTH_LONG).show();
initiate();
}
Looper.loop();
}
// 启动重连线程
private void initiate() {
Thread isAgainThread = new Thread(IsAgainConnect.this);
isAgainThread.start();
}
}