我们可以执行
handler.postDelayed(runnable,400)
来自非Activity
类?
我有一个控制器类,假设它是一个适配器。我们可以在那里使用Handler
吗?
我尝试使用断点调试我的应用,但控件未到达
handler.postDelayed(runnable,400)
有人可以帮我解决这个问题吗?
其实我正在使用OCR。如果进行了某些匹配,我想自动返回到我的主要活动。我想它是一个笨蛋。我也需要捕捉它的照片。为此,我需要使用处理程序。
答案 0 :(得分:3)
我们可以从非
handler.postDelayed(runnable, 400)
类执行Activity
吗?
是的,你可以。
任何Handler
都与Thread
(不是Activity
或其他对象)和Thread
的消息队列相关联。 Handlers
发布/ 处理 Messages
和Runnables
到/ 来自由Looper
处理的队列。
当你在主线程中创建Handler
时(例如在Activity
类中),你发布/发送消息和Runnables
(post()
,postDelayed()
,sendMessage()
等)到运行循环。但是,默认情况下,线程没有循环运行,除非您先创建一个调用Looper.prepare()
,然后调用Looper.loop()
。
如果在后台线程上创建的Handler
要将消息和Runnables
发布到主线程队列
Looper
传递给Handler
的{{3}} new Handler(Looper.getMainLooper())
。我尝试使用断点调试我的应用,但控件未到达。
我假设您的代码逻辑永远不会到达“控件”或在后台线程中创建handler
而没有准备和循环Looper
,因此无法处理runnable
由handler
。
答案 1 :(得分:0)
我用过计时器。它对我有用。 LOL。
new Timer().schedule(new TimerTask() {
@Override
public void run() {
Intent data = new Intent();
data.putExtra(OcrCaptureActivity.TextBlockObject, textBlock.getValue());
Log.d("Read Text : ", textBlock.getValue());
Base.base_activity.setResult(CommonStatusCodes.SUCCESS, data);
Base.base_activity.finish();
}
}, POST_DELAYED_TIME);