android - AlertDialog.show 在服务中被静默忽略

标签 android multithreading service dialog

我有一个运行后台线程的服务。我想做的是 显示从我的后台线程启动的 AlertDialog。我知道 这不是推荐的通知用户的方式,并且它 中断工作流程(因为它们可以随时在任何应用程序中弹出 时间),但它适合我的用例。

有一个处理程序注册到后台线程并显示 使用处理程序的 toast 通知工作正常。但是切换之后 到 AlertDialog 什么都没有发生了。我的 showDialog 逻辑是 默默无视。没有出现对话窗口,也没有日志条目。有点 奇怪,因为我希望至少有一个日志条目说我正在做 有什么不对的地方。

显示从 服务后台线程?有些人似乎推荐一个对话主题 获得类似行为的 Activity 。

非常感谢任何澄清或帮助使其发挥作用!

伊夫

最佳答案

可以从后台线程打开对话框。诀窍是启动一个看起来像对话框的 Activity :

<activity android:label="@string/app_name" android:name="YourDialog" android:theme="@android:style/Theme.Dialog"/>

然后,开始您的 Activity :

Intent dialog = new Intent(this, YourDialog.class);
dialog.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialog);

请注意,这是异步的,不会阻塞。如果要处理结果,则必须使用 startService() 并传递自定义 Activity 以指示结果。

以马内利

关于android - AlertDialog.show 在服务中被静默忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4131619/

相关文章:

java - 从 ram 中清除后警报停止

java - doInBackground 成功后 OnPostExecute 不会调用

android - 将图标+文本添加到 TabLayout

java - 向图形输出添加暂停

c - 多线程查找整数的质因数,段错误

javascript - 无法在 Controller 中使用angularjs服务返回的数据

java - Android游戏的逻辑流程

android - 如何在 Kotlin 中使用 `strings.xml` 从 Recycler Adapter 类访问 `getString()` 中的字符串

python - QThreads 和 xmlrpc 客户端

php - Zend Framework 2 - 如何对自己的 session 服务进行单元测试?