[100分]去了很多论坛都没搞掂:socket客户端连续性出现2次联接服务端
[100分]去了很多论坛都没搞掂:socket客户端连续性出现2次连接服务端
故障现象:就是偶尔会出现 连续性连接了两次服务端,(不是每次,是偶尔)
从代码上看,应该不会出现这种情况的,但是不知道怎么回事,还是失败了!!
纳闷啊,不知道哪里有bug了。。。
路过的都看看,指教下~~
![[100分]去了很多论坛都没搞掂:socket客户端连续性出现2次联接服务端 [100分]去了很多论坛都没搞掂:socket客户端连续性出现2次联接服务端](/default/index/img?u=aHR0cDovL3d3dy5teWV4Y2VwdGlvbnMubmV0L2ltZy8yMDE0LzA0LzAzLzEwMDkwMjYyLmdpZg==)
具体代码:
MainActivity.java:
自动连接服务端的客户端
SocketAutoConnect.java:
故障现象:就是偶尔会出现 连续性连接了两次服务端,(不是每次,是偶尔)
从代码上看,应该不会出现这种情况的,但是不知道怎么回事,还是失败了!!
纳闷啊,不知道哪里有bug了。。。
路过的都看看,指教下~~
具体代码:
MainActivity.java:
public class MainActivity extends Activity {
private Button startBtn = null;
private boolean flag = false;
private SocketAutoConnect socketAutoConnect = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startBtn = (Button) this.findViewById(R.id.btn_start);
startBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!flag) {
socketAutoConnect = new SocketAutoConnect();
new Thread(socketAutoConnect, "SocketAutoConnect")
.start();
flag = true;
} else {
if(socketAutoConnect != null)
socketAutoConnect.setSocketConnected(false);
Toast.makeText(MainActivity.this, "重启socket",
Toast.LENGTH_LONG).show();
}
}
});
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
createExitDialog();
}
return super.onKeyDown(keyCode, event);
}
/**
* 创建 退出确认的 窗口
*/
public void createExitDialog() {
AlertDialog.Builder exitDialog = new AlertDialog.Builder(this);
exitDialog.setMessage("您确定退出?");
exitDialog.setPositiveButton("退出",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
System.exit(0);
}
});
exitDialog.setNegativeButton("取消", null);
exitDialog.show();
}
}
自动连接服务端的客户端
SocketAutoConnect.java:
public class SocketAutoConnect implements Runnable {
private final String tag = "SocketAutoConnect";