我想在開關打開時每500毫秒重複一次功能。但是當我運行我的代碼時,當我設置開關時,一切凍結。這裏是我的代碼:Android:使用處理程序和開關時,應用程序會凍結
mySwitch.setChecked(false);
mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
pom = true;
while (pom) {
final Handler h = new Handler();
final int delay = 1000;
h.postDelayed(new Runnable(){
public void run(){
myClient.SendData("AA");
h.postDelayed(this, delay);
}
}, delay);
}
}
else{
pom = false;
}
}
});
我曾嘗試過這個,現在我的應用程序犯規凍結,現在它崩潰了下來:
mySwitch.setChecked(false);
mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
pom = true;
while (pom) {
int delay = 0; // delay for 0 sec.
int period = 500; // repeat every 10 sec.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask()
{
public void run()
{
myClient.SendData("AA");
}
}, delay, period);
}
}
else{
pom = false;
}
}
});
您必須將pom設置爲false或使用來自** while while循環內的** break。無論如何,你想做什麼? – nandsito