Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在while循环中使用post处理程序_Java_Android - Fatal编程技术网

Java 在while循环中使用post处理程序

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

我试图在while(true)循环中使用
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);
}
});

改用定期报警管理器。此代码无效。您可以使用新的后台线程进行此定期更新。如果您需要,我将提供源代码。使用定期报警管理器代替。此代码无效。您可以使用新的后台线程进行此定期更新。如果你愿意,我会提供源代码。