在某些情况下,可能需要通知用户你的应用程序发生了一些事情。其中一些需要用户回应,一些则不需要,如下:
- 当完成保存文件时,应该显示一个小的信息来表示保存成功.
- 如果应用程序在后台运行并且需要用户的注意,它应该创建一个通知来方便用户与应用程序的互动.
- 如果应用程序在执行一个用户必须等待的工作(比如加载文件),应用应该显示一个进度环或者进度条(都是 progressBar,只是 sttyle 不一样)。
上面的三种情况对应着下面三种实现技术:
- Toast Notification, 用来显示一个简短的信息.
- Status Notification, 作为持久的提醒,并且要求用户去响应.
- A Dialog Notification, 与 Activity相关的通知.
这篇文章简要介绍了这三种实现方式,并且有链接到完整的介绍去.
Toast Notification
一个 toast 是在屏幕上弹出一条信息,它的大小总是包裹着需要显示的内容,并且当前的 Activity 依然是可见并且可互动的。toast会自动消失,斌给钱不接受任何互动事件。因为 toast 可以在后台的 Service
中创建,所以即使这个应用程序没有显示在屏幕上,仍然可以弹出 toast.
toast 最好用来显示简要的信息,比如断定用户正在注意屏幕时,弹出"File saved". toast 不能接受任何用户互动事件,如果需要用户响应并采取操作,考虑使用 Status Notification 来替代.
请参考 Toast Notifications 来获取更多信息.
Status Notification
一个状态栏通知会在状态栏上显示一个图标(并且会显示一行信息,by汉尼拔萝卜:这个显示文字已经被取消了,因为这样子显示在状态栏上太难看了,google终于把它给取消了。顺带说一句,因为翻译的文档并不是对应Google最新的api,所以有些功能会与最新的api有出入),下拉状态栏后会显示完整的信息。当用户点击这个 notification 时,系统就会处理创建 notification 是传入的 Intent
(通常是启动一个 Activity).你也可以给你的notification添加声音、震动、闪光灯功能。
当你的应用使用后台 Service
并且需要通知用户某个事件时,notification 是最好的选择。如果你的 Activity 取得焦点时,你需要警示用户,可以考虑使用 Dialog Notification 来替代.
参考 Status Notifications 来获取更多信息.
Dialog Notification
对话框是在当前 activity 上弹出一个小的窗口,对话框下面的 activity 将是去焦点,对话框开始与用户互动。对话框通常显示在正在运行的程序的 notification 和 activity 中。
当你需要显示进度条或者需要用户确认时(比如带有 "OK" 和 "Cancel"按钮),应该弹出对话框。你可以将对话框作为应用 UI 的组成部分,还可以使用它来处理不使用 notification 的情况。各种各样的对话框样式,在 Dialogs 中都有描写.