我试图在while(true)循环中使用handler.postdelayed
所以每隔5秒它会使用一个按钮发送一个特定的值
但当我按下按钮时它只是挂起而没有任何响应它不会崩溃也不发送
我如何使用在循环内延迟的帖子?
btnsend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
while(true) {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
DatabaseReference childRoot = rootRoomName.push();
Map<String, Object> map = new HashMap<String, Object>();
map.put("Name", username);
map.put("message", Response1);
childRoot.updateChildren(map);
}
}, 5000);
}
}
});
答案 0 :(得分:0)
这是错误的。您正在使用while(true)循环终止应用程序。相反,你应该在最后的run()方法中调用postDelayed,这样它每次执行后都会自行调度。像这样:
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
handler.postDelayed(this, 5000);
}
}
handler.post(runnable);
答案 1 :(得分:0)
您使用了无限循环,它不会正常终止。我不认为你在这里需要,只需根据需要配置处理程序。
btnsend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
DatabaseReference childRoot = rootRoomName.push();
Map<String, Object> map = new HashMap<String, Object>();
map.put("Name", username);
map.put("message", Response1);
childRoot.updateChildren(map);
}
}, 5000);
}
});