Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
是否有任何理由在Android的onclick处理程序中向主循环器发送消息?_Android - Fatal编程技术网

是否有任何理由在Android的onclick处理程序中向主循环器发送消息?

是否有任何理由在Android的onclick处理程序中向主循环器发送消息?,android,Android,我正在看其他人用Android编写的一些代码。他们连接了一个onclick监听器,并在其中放入一些代码,将runnable发布到运行主循环器的处理程序。像这样: Handler handler = new Handler(Looper.getMainLooper()); ... button.setOnClickListener(new OnClickListener() { public void onClick(View v) { handler.post(new

我正在看其他人用Android编写的一些代码。他们连接了一个onclick监听器,并在其中放入一些代码,将runnable发布到运行主循环器的处理程序。像这样:

Handler handler = new Handler(Looper.getMainLooper());

...

button.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        handler.post(new Runnable() {

            public void run() {
                //code
            }
        });
    }
});
对我来说,这看起来完全是浪费时间,因为onClickListener和处理程序都在主/UI线程上运行。有什么可以想象的理由这样做吗

编辑:让我提供更多细节

Handler handler = new Handler(Looper.getMainLooper());

...

button.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        handler.post(new Runnable() {

            public void run() {
                someListener.onComplete();
                ((ViewGroup) ((Activity) getContext()).getWindow().getDecorView()).removeView(someFrame);
            }
        });
    }
});

你为什么要这么做。?这不是必须的。老兄,我不知道;我认为写这段代码的人是个白痴,但我想确保我不仅仅是遭受邓宁-克鲁格效应的折磨,有几个案例说明这一点是有意义的。我看到的一个例子是,代码在正确执行之前需要进行布局。如果请求布局,您可以发布一个Runnable,该命令将在布局传递发生后执行。我相信只有当按钮出现在屏幕上(即布局发生后)才能单击该按钮。??看起来已经有点像黑客,通过该链从装饰视图中删除视图。我敢打赌出现了一些问题需要这样做——我建议不要删除发布到处理程序的代码,但是如果您觉得需要重构,那么看看是否有更好的方法来完成按钮正在做的事情,而不必通过一系列转换访问装饰视图。