我试着为它寻找明确的答案,但无法在任何地方找到它。我在主活动中运行后台线程来检查某个变量,如果它是真的,它应该显示警告对话框。我还希望此对话框显示应用程序的任何重点活动。我通过向线程添加Looper.prepare()和Looper.loop()来尝试它,但它不能正常工作,它影响我用来检查该线程中的变量的while()循环。任何人都可以帮助我找出实现这个的最佳方法是什么?
感谢。
答案 0 :(得分:1)
如果使用main / ui线程构造后台线程,则可以在构造函数中创建Handler
。当你想在main / ui线程上运行一些代码时,你只需要Handler.post(Runnable r)
运行ui线程。
如果你的后台线程没有在ui / main线程上构建,你可以使用BroadcastIntent和BroadcastReceiver模式在后台线程和前台活动之间发送消息。如果要在后台线程的使用寿命期间切换前台活动,这将非常有用。
答案 1 :(得分:0)
您可能想尝试创建Runnable
的实现并将其传递给View
的{{1}}方法。
post()
这将在UI线程上运行final Runnable r = new Runnable() {
public void run() {
//code to display dialog
}
}
final View view = findViewById(R.id.XYZ);
view.post(r);
。
答案 2 :(得分:0)
好的,我可以看到两种方法。第一个是脏但很快:
您可以扩展TimerTask
和Handler
类。 YourTimerTask
会检查变量并将Message
发送给YourHandler
。 YourHandler
应覆盖handleMessage
并显示对话框。
第二个可能是矫枉过正,但仍然存在。 Android是基于事件的。这意味着系统为您提供了创建自己的事件并处理它的机会。因此,您可以启动Service
,它会检查您的变量并发送Broadcast
(可以是本地的)。在您的活动中,您必须创建自己的BroadcastReceiver
并注册它。该接收器将处理消息。