Java 在while循环中使用post处理程序
我试图在while(true)循环中使用Java 在while循环中使用post处理程序,java,android,Java,Android,我试图在while(true)循环中使用handler.postdelayed,因此每隔5秒它将使用按钮发送一个特定值 但当我按下按钮时,它只是挂起,没有任何响应,它也不会崩溃 如何在循环中使用延迟的post btnsend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { while(t
handler.postdelayed
,因此每隔5秒它将使用按钮发送一个特定值
但当我按下按钮时,它只是挂起,没有任何响应,它也不会崩溃
如何在循环中使用延迟的post
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);
}
}
});
btnsend.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
while(true){
最终处理程序=新处理程序();
handler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
DatabaseReference childRoot=rootRoomName.push();
Map Map=newhashmap();
map.put(“名称”,用户名);
map.put(“消息”,Response1);
childRoot.updateChildren(映射);
}
}, 5000);
}
}
});
这是错误的。您正在通过while(true)循环终止应用程序。相反,您应该在末尾从run()方法内部调用postDelayed,以便它在每次执行后都进行调度。大概是这样的:
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
handler.postDelayed(this, 5000);
}
}
handler.post(runnable);
这是错误的。您正在通过while(true)循环终止应用程序。相反,您应该在末尾从run()方法内部调用postDelayed,以便它在每次执行后都进行调度。大概是这样的:
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
handler.postDelayed(this, 5000);
}
}
handler.post(runnable);
您使用了一个无限while循环,它不会正常终止。我认为在这里您不需要,只需根据需要配置处理程序即可
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);
}
});
btnsend.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
最终处理程序=新处理程序();
handler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
DatabaseReference childRoot=rootRoomName.push();
Map Map=newhashmap();
map.put(“名称”,用户名);
map.put(“消息”,Response1);
childRoot.updateChildren(映射);
}
}, 5000);
}
});
您使用了一个无限while循环,它不会正常终止。我认为在这里您不需要,只需根据需要配置处理程序即可
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);
}
});
btnsend.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
最终处理程序=新处理程序();
handler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
DatabaseReference childRoot=rootRoomName.push();
Map Map=newhashmap();
map.put(“名称”,用户名);
map.put(“消息”,Response1);
childRoot.updateChildren(映射);
}
}, 5000);
}
});
改用定期报警管理器。此代码无效。您可以使用新的后台线程进行此定期更新。如果您需要,我将提供源代码。使用定期报警管理器代替。此代码无效。您可以使用新的后台线程进行此定期更新。如果你愿意,我会提供源代码。