来自非 Activity class 的处理程序
Handler from a non-Activity class
我们可以执行吗
handler.postDelayed(runnable,400)
来自非Activity
class?
我有一个控制器class,假设它是一个适配器。我们可以在那里使用 Handler
吗?
我尝试使用断点调试我的应用程序,但控件未达到
handler.postDelayed(runnable,400)
谁能帮我解决这个问题?
实际上我正在使用 OCR。如果进行了某些匹配,我想 return 自动到我的主 activity。我想它是一个活套。我还需要拍摄它的照片。为此,我需要使用处理程序。
Can we execute handler.postDelayed(runnable, 400)
from a non-Activity
class?
是的,你可以。
任意 Handler
is associated with a Thread
(not an Activity
or another object) and the Thread
's message queue. Handlers
post/process Messages
and Runnables
to/from the queue that is handled by Looper
.
当您在主线程中创建一个 Handler
时(例如在 Activity
class 中)您 post/send 消息和 Runnables
(使用 post()
、postDelayed()
、sendMessage()
等)到 运行 循环。但是,默认情况下,线程没有循环 运行 除非您随后调用 Looper.prepare()
first and Looper.loop()
创建一个循环。
如果在后台线程上创建的 Handler
用于 post 消息和 Runnables
用于主线程队列
- 将主线程的
Looper
传递给 Handler
的 constructor
- 或使用
new Handler(Looper.getMainLooper())
.
I tried debugging my app using break points, but the control is not reaching.
我假设您的代码逻辑永远不会达到 "the control",或者 handler
是在后台线程中创建的,没有准备和循环 Looper
这样 runnable
就可以'不会被 handler
.
处理
我用了定时器。它对我有用。哈哈
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);
我们可以执行吗
handler.postDelayed(runnable,400)
来自非Activity
class?
我有一个控制器class,假设它是一个适配器。我们可以在那里使用 Handler
吗?
我尝试使用断点调试我的应用程序,但控件未达到
handler.postDelayed(runnable,400)
谁能帮我解决这个问题?
实际上我正在使用 OCR。如果进行了某些匹配,我想 return 自动到我的主 activity。我想它是一个活套。我还需要拍摄它的照片。为此,我需要使用处理程序。
Can we execute
handler.postDelayed(runnable, 400)
from a non-Activity
class?
是的,你可以。
任意 Handler
is associated with a Thread
(not an Activity
or another object) and the Thread
's message queue. Handlers
post/process Messages
and Runnables
to/from the queue that is handled by Looper
.
当您在主线程中创建一个 Handler
时(例如在 Activity
class 中)您 post/send 消息和 Runnables
(使用 post()
、postDelayed()
、sendMessage()
等)到 运行 循环。但是,默认情况下,线程没有循环 运行 除非您随后调用 Looper.prepare()
first and Looper.loop()
创建一个循环。
如果在后台线程上创建的 Handler
用于 post 消息和 Runnables
用于主线程队列
- 将主线程的
Looper
传递给Handler
的 constructor - 或使用
new Handler(Looper.getMainLooper())
.
I tried debugging my app using break points, but the control is not reaching.
我假设您的代码逻辑永远不会达到 "the control",或者 handler
是在后台线程中创建的,没有准备和循环 Looper
这样 runnable
就可以'不会被 handler
.
我用了定时器。它对我有用。哈哈
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);