android service中显示一个dialog
轉自:http://blog.csdn.net/huxueyan521/article/details/8954844
dialog是依附于activity存在的。但是app中經常需要使用以下的情況,在service中做一些后臺操作,在某個臨界條件滿足時,顯示一個dialog告知用戶。
這時dialog無法直接從service中啟動起來,會報出android.view.WindowManager$BadTokenException:Unable to add window的錯誤。
解決方法有兩種:
1. 顯示一個系統界別的dialog,即全局性質的dialog。這種dialog在任何界面下都可以彈出來。但是,這種dialog不相應home鍵和返回鍵,即強制用戶必須對dialog作出操作后。
使用方法是在dialog.show()語句之前設置dialog的window的type是system alert型。如下:
[java]?view plaincopyprint?
還需要在AndroidManifest.xml中增加權限:
[html]?view plaincopyprint?
2. 在dialog的背后加一個透明的activity。即先顯示一個透明的activity,在使用activity的context顯示dialog。需要注意的是,activity在destroy的時候一定要把dialog給dismiss掉,否則activity消失但dialog還在,會crash。
透明activity的創建方法是在AndroidManifest.xml中添加theme:
[html]?view plaincopyprint?
[java]?view plaincopyprint?
總結
以上是生活随笔為你收集整理的android service中显示一个dialog的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android AsyncTask两种线
- 下一篇: android 一个很漂亮的控件Obse