我们可以执行
handler.postDelayed(runnable,400)
来自非Activity
类?
Handler
吗?我试着用断点调试我的应用程序,但控制没有到达
handler.postDelayed(runnable,400)
关于这件事,有人能帮我吗?实际上我用的是OCR。如果匹配成功,我想自动返回到我的主要活动。我想它是环形的。我还需要拍下它的照片。为此,我需要使用处理程序
我们可以在非
Activity
类中执行handler.postDelayed(runnable, 400)
吗?
是的,你可以。
任何Handler
都与Thread
(不是Activity
或其他对象)和Thread
的消息队列相关联。Handlers
post/process Messages
和Runnables
从到/由Looper
处理的队列
当你在主线程中创建Handler
(例如在Activity
类中)时,你发布/发送消息和Runnables
(与post()
, postDelayed()
, sendMessage()
等)到运行循环。但是,默认情况下,线程不运行循环,除非创建一个循环,先调用Looper.prepare()
,然后调用Looper.loop()
。
如果在后台线程上创建Handler
是为了发送消息,Runnables
是为了向主线程队列发送消息
- 将主线程的
Looper
传递给Handler
的构造函数 - 或使用
new Handler(Looper.getMainLooper())
.
我试着用断点调试我的应用程序,但是控件没有到达。
我假设你的代码逻辑永远不会达到"控制"或handler
是在后台线程中创建的,没有准备和循环Looper
,因此runnable
不能由handler
处理。
我使用定时器。这对我很有效。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);