如何在没有Activity上下文的情况下在Android中显示一个对话框?

这似乎应该很简单,但我没有找到一个答案在任何地方。我有一个Android应用程序在后台执行网络任务。如果错误再次出现,我想显示一个错误对话框。当任务返回时,我不知道哪个Activity在前台。基于this post,它看起来像我们不能使用应用程序上下文显示一个对话框(确实我得到崩溃,如果我尝试)。

那么如何获得当前活动的上下文?同样,网络任务的接收器正在应用程序上下文中运行,而不是在特定的活动中。任何其他想法?

编辑:我应该澄清。如果我不是前台应用程序,我不想显示错误对话框。我只感兴趣的情况下,我们的应用程序是在前台现在。

最佳答案

If an error comes back, I want to display an error dialog.

请只在您知道用户正在使用您的应用程序时才执行此操作。如果你在其他事情中打断他们(玩游戏,看电影,看书),用户会非常恼火。

So how can I get the context of the current activity?

你不是。最多,你让当前活动知道它需要做某事。

Any other ideas?

一种可能性是使用有序广播,所以如果你有一个前台活动,它获得控制,否则你提出一个通知让用户知道问题,而不弹出一个对话框。接收有序广播的活动可以显示AlertDialog或以其他方式让用户知道问题。我写了关于如何做这个in a blog post(和a book chapter,为此事)的细节,和here is a sample application演示的技术。

或者,有服务调用startActivity()来启动a dialog-themed activity

转载注明原文:如何在没有Activity上下文的情况下在Android中显示一个对话框? - 代码日志