android - 从服务启动对话框

标签 android service android-activity dialog

我想从悬停在用户当前正在查看的内容上的服务启动一个对话框。对话框像这样启动:服务获取触发器以打开对话框 > 启动透明 Activity > 透明 Activity 显示对话框。

我的问题是当用户打开应用程序,进入主菜单,然后按 HOME 离开时。通过按 HOME,它会暂停主菜单 Activity ,而不是将其销毁,并且当服务启动对话框时,主菜单会显示在透明 Activity 下方;导致对话框失去悬停在用户正在查看的任何内容上的影响。

如何才能使透明 Activity 独立于应用程序中的任何其他 Activity 打开?目前防止这种情况的唯一方法是在暂停时完成所有 Activity ;但这是不切实际的。

最佳答案

This是我们最不想要的。 :-)

<强>1。来自服务的对话框

移动设备(恕我直言,尤其是 Android)的最佳体验之一是,几十年后,我们摆脱了系统范围内的烦人警报对话框。最后,最佳实践 [ 1 , 2 ] 用于用户交互为我们提供了一种方法来避免臭名昭著的传播使用 MessageBox(hwnd, lpText, lpCaption, uType),争夺焦点和可怜的用户的注意力。请参阅上面的视频模仿。

Service 开始对话感觉很尴尬的原因正是因为它应该是后台任务,没有用户交互。从概念上讲,你不应该这样做。这就是为什么我们首先看到这些技巧(透明 Activity ,多么愚蠢的事情)来欺骗设计指南的原因。它们很糟糕,它们扰乱了用户体验,它们窃取了焦点和注意力。他们扰乱了我们的工作。

<强>2。改用通知

每当您想从后台通知用户某事时,当用户在其他地方时,您可以使用通知。这是默认模式,不会打扰用户。

因此,你应该是sending notifications from your Service .

从那里,如果用户感兴趣,然后他将触摸通知,然后您开始自己的 Activity ,可能会恢复您的 Activity ,创建一个新 Activity ,然后使用对话框请求操作执行,或任何您想做的事情。

<强>3。最后,不要使用FLAG_ACTIVITY_MULTIPLE_TASK

You should not永远,除非您仔细阅读并完全理解 documentation,否则请使用此标志,以及使用该标志的含义。

Do not use this flag unless you are implementing your own top-level application launcher. (...) Because the default system does not include graphical task management, you should not use this flag unless you provide some way for a user to return back to the tasks you have launched.

真的。在这种情况下,不要这样做。

关于android - 从服务启动对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8350385/

相关文章:

windows - 如何在 Windows 2012 Server 上创建运行 .exe 文件的服务?

android - onNewIntent() 在手机唤醒之前不会触发

android - 如何摆脱这个 token 验证器 Hilt 依赖循环?

java - 当我想更改 imageView 时,intent.getData() 为 null

android - android AVD屏幕上的两个圆圈

android - 清除最近的应用程序删除应用程序内存并且我的接收器停止工作

android - 以编程方式创建 FloatingActionButton(无 xml)

android - 我可以在没有 Activity 或接收器的情况下启动服务吗?

android - FLAG_ACTIVITY_CLEAR_TOP 和 android :launchMode ="singleInstance"

java - 从对象启动 Activity