Android方向更改调用Switch.onChange

时间:2013-07-13 20:38:16

标签: android android-orientation

我有一个Switch Control的活动。使用此开关控制,用户可以打开/关闭tcp服务器。

现在我对here有一个类似的问题。如果Switch(以及服务器)打开并且方向发生更改,则再次调用onclicklistener,因此服务器也会再次启动。

我试图通过检查客户端是否为空来处理这个问题:

OnCheckedChangeListener listener = new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {    
        if(isChecked) {
            if (client == null)
              startCubeSolverServer();
        } else {
            if (client != null)
              stutdownCubeSolverServer();
        }
    }
};

但是因为客户端对象是我的活动的私有变量,所以它会被重置为每个方向更改为null。

如果用户视图中的值没有更改,是否可以轻松修复changeHandler

1 个答案:

答案 0 :(得分:1)

系统在您的情况下的行为是正确的。当方向改变时,应该调用onCheckedChanged。

现在针对您的情况,如果tcp服务器是一个服务,那么您应该在onStartCommand中移动该服务的onCreate方法中的所有初始化,这样做,因为方向更改,您不必执行任何操作服务只能由系统创建一次,并且你要重新启动它的次数并不重要。

另一种解决方案是处理切换按钮的onClick事件而不是onCheckedChanged,因为在方向更改后onClick不会启动。但是,如果执行此操作,则必须研究切换按钮的onClick方法是否在选中状态更改之前或之后触发。

希望这会有所帮助......