是否有任何理由在Android的onclick处理程序中向主循环器发送消息?
我正在看其他人用Android编写的一些代码。他们连接了一个onclick监听器,并在其中放入一些代码,将runnable发布到运行主循环器的处理程序。像这样:是否有任何理由在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
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,该命令将在布局传递发生后执行。我相信只有当按钮出现在屏幕上(即布局发生后)才能单击该按钮。??看起来已经有点像黑客,通过该链从装饰视图中删除视图。我敢打赌出现了一些问题需要这样做——我建议不要删除发布到处理程序的代码,但是如果您觉得需要重构,那么看看是否有更好的方法来完成按钮正在做的事情,而不必通过一系列转换访问装饰视图。