[100分]去了很多论坛都没搞掂:socket客户端连续性出现2次联接服务端

[100分]去了很多论坛都没搞掂:socket客户端连续性出现2次连接服务端
故障现象:就是偶尔会出现    连续性连接了两次服务端,(不是每次,是偶尔)
从代码上看,应该不会出现这种情况的,但是不知道怎么回事,还是失败了!!
纳闷啊,不知道哪里有bug了。。。
路过的都看看,指教下~~

[100分]去了很多论坛都没搞掂:socket客户端连续性出现2次联接服务端
具体代码:
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";