The NoteBook of EricKong

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

          描述:

          如何檢查后臺服務(Android的Service類)是否正在運行?我希望我的Activity能夠顯示Service的狀態,然后我可以打開或者關閉它。

           

          回答:

          Android系統提供了一個函數ActivityManager.getRunningServices可以列出當前正在運行的后臺服務線程

          private boolean isServiceRunning() {
              ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
              for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
                  if ("com.example.MyService".equals(service.service.getClassName())) {
                      return true;
                  }
              }
              return false;
          }

          這個方法是可靠的,因為這是由Android系統提供的服務查詢辦法。
          所以以來于OnDestroy或者OnXXX方法,甚或是Binders以及靜態變量的方法都是不可靠的,因為作為一個開發者,你永遠不知道Android系統什么時候會殺掉你的進程來釋放內存,那些回調函數很可能根本沒機會被調用。

          另外,關于如果希望手工檢查所有后臺服務的運行狀態,見如何觀察和控制正在運行的Android后臺服務.

          posted on 2012-04-11 17:33 Eric_jiang 閱讀(9817) 評論(1)  編輯  收藏 所屬分類: Android
          主站蜘蛛池模板: 施甸县| 合江县| 旅游| 利川市| 新平| 会昌县| 措勤县| 蒙山县| 阜新| 辽宁省| 定远县| 江川县| 镇雄县| 永顺县| 萨嘎县| 万宁市| 延川县| 南丰县| 利津县| 新巴尔虎右旗| 开化县| 赞皇县| 平昌县| 衡东县| 白山市| 丹寨县| 穆棱市| 紫云| 台前县| 延吉市| 新龙县| 伊吾县| 峡江县| 云安县| 囊谦县| 博客| 开鲁县| 丹阳市| 长岛县| 禹州市| 社旗县|