消息处理,工作线程的意外行为

| 我正在尝试一个带有后台服务的大型程序,并且正在使用基本的Handler对象实现消息处理过程(考虑较深)。该应用程序具有一个带按钮的主菜单,可启动6个不同的活动。 问题是这样的:如果我启动了一个工作线程,该线程启动了对数据库的查询并检索了一些数据,并且我关闭了启动上述工作线程的Activity,则Activity中的Handler仍然尝试运行并显示一个对话框,甚至尽管创建它的活动现在已经完成(或未处于焦点)。在提交任何(UI)更改之前,如何判断当前的Activity是否处于焦点? 我最终通过简单地将\'showDialog()\'调用放在try语句中来解决了该问题,但是我想要一个更复杂的解决方案,因为这似乎是错误的处理方式。     
已邀请:
        使用
sendBroadcast()
,让
Activity
注册
BroadcastReceiver
,以便在
onResume()
中通过
registerReceiver()
进行广播,并在
onPause()
中取消注册。然后,仅在事件处于前台时才处理事件。     
        在“ 5”活动方法中放一些标志,该方法将启动线程以指示该线程不再是前台的。在
onStart()
中,反转标志。 当需要显示对话框时,请选中此标志,并且仅在活动正在运行时才显示对话框。     

要回复问题请先登录注册