Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用
關于PackageManager和ActivityManager的使用 ,自己也寫了一些DEMO 了,基本上寫的線路參考了Settings模塊下的
????????應用程序,大家如果真正的有所興趣,建議大家看看源碼,不過丑化說在前面,我自己也沒怎么看過這方面的源碼,只在
????????需要的時候,才跑過去翻翻。
?????????
?????????????今天,在耐著最后一點性子,寫下了這篇博文,基本上完成了整個應用程序功能模塊的介紹,大家也在此系列上慢慢拓展。
?
? ActivityManager.RunningServiceInfo類:??封裝了正在運行的服務信息
?
? 獲取系統里所有真正運行的服務是通過調用ActivityManager方法來得到的,具體方法如下:
?
?????????????????????List<ActivityManager.RunningServiceInfo>?getRunningServices?(int maxNum)
??????????????????????? ?功能:返回所有正在運行的服務
??????????????????????? ?參數:?? maxNum 代表我們希望返回的服務數目大小,一般給個稍大的值即可, 例如,50 。?
???????????????????????????????
ActivityManager.RunningServiceInfo 類
? 常用字段:
?
?????????????? long?? activeSince????????服務第一次被激活的時間, 包括啟動和綁定方式
?????????????? int????? clientCount??????????如果該Service是通過Bind方法方式連接,則clientCount代表了service連接客戶端的數目
???????????????int??? ? crashCount???????? ?服務運行期間,出現死機的次數
???????????????boolean?? foreground???若為true,則該服務在后臺執行
???????????????int?????? ?pid??????????????????????????如果不為0,表示該service所在的進程ID號( PS:為0的話我也不清楚 - - 求指點)
?????????????? int?????? ?uid??????????????????????????用戶ID 類似于Linux的用戶權限,例如root等????????????????????
????????????? String? ?process??????????????? ?進程名,默認是包名或者由屬性android:process指定
??????????????ComponentName??service??????????獲得該Service的組件信息 包含了pkgname / servicename信息
?
PackageManger類
?? 說明: 封裝了對應用程序信息的操作
??????? 獲得應用程序信息的的方法如下:
????????? public abstractApplicationInfo??getApplicationInfo(String? packageName, int flags)
???????????????? 參數:packagename 包名
???????????????????????????? flags 該ApplicationInfo是此flags標記,通常可以直接賦予常數0即可
???????????????? 功能:返回ApplicationInfo對象
?
????????關于PackageManger更多信息,請查看<Android中獲取應用程序(包)的信息-----PackageManager的使用(一)>
?
?? Task任務的使用,我也就不在贅述了,大家可以仔細看下SDK,在此推薦一篇博客來幫助大家理解。
????????? 《Android系統的進程,任務,服務的信息》
?
?
Demo說明:
?
????? ???我們獲取了系統里正在運行的服務信息,包括包名,圖標,service類名等。為了達到Settings下應用程序模塊中的
??? 正在運行服務的效果,我們點擊某一服務后,理論上來說是可以停止該服務的,但是由于權限permissions不夠,可能報
????SecurityException異常,導致應用程序發生異常。
?
??? 關于權限不夠的問題,可以分為兩種:
?????? 1、 在AndroidManifest.xml文件中,為<activity/>或<service/>節點指定android:permission屬性時,在其他進程中操作時,
?????????? ?? 需要?聲明該permission權限 。 具體可以參考下面這篇文章:
????????????????????????????????????????????? 《android 自定義權限 permission》
?
?????? 2、?系統權限,這個咱就沒什么話說了。 可以參考下面這篇文章。
???????????????????????????????????《android.uid.system?獲取系統權限 》
?
?
????截圖如下:(加上了水印,請諒解)
?
???????????????????????????????????????? ??? ????
原文:http://blog.csdn.net/qinjuning/article/details/7015313
轉載于:https://www.cnblogs.com/shanzei/archive/2012/03/29/2423990.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Git上传Github及基本操作
- 下一篇: CImg库【C++】