我有Switch
和Timer
个对象,每1秒检查一次这个切换。
protected void onCreate(Bundle savedInstanceState) {
switchOnOff = (Switch) findViewById(R.id.switchOnOff);
// more code...
m_timer = new Timer();
m_timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
if(switchOnOff != null && switchOnOff.isChecked() && m_TcpClient != null) {
if (!m_TcpClient.IsSocketUp()) {
switchOnOff.setChecked(false); <---- the code crashes here
}
}
}
}, 0, 1000);
}
如果所有这些条件都成立,我想关闭开关但应用程序崩溃。
我做错了什么?
感谢。
答案 0 :(得分:0)
看起来您尝试使用工作线程中的View,但在Android中禁止使用。 你应该换入新的Runnable并在ui线程上运行它,例如:
@Override
public void run() {
if(switchOnOff != null && switchOnOff.isChecked() && m_TcpClient != null) {
if (!m_TcpClient.IsSocketUp()) {
runOnUiThread(new Runnable(){
public void run() {
switchOnOff.setChecked(false);
}
}
}
}
}
}, 0, 1000);
}