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 閱讀(9821) 評論(1)  編輯  收藏 所屬分類: Android
          主站蜘蛛池模板: 左贡县| 巴彦淖尔市| 四川省| 招远市| 泰宁县| 三都| 辰溪县| 阿拉尔市| 拉萨市| 仙游县| 隆回县| 大兴区| 浮梁县| 色达县| 仲巴县| 秦安县| 库伦旗| 博罗县| 兴山县| 会同县| 商城县| 大悟县| 厦门市| 河曲县| 达拉特旗| 唐山市| 丹巴县| 新野县| 红桥区| 武宣县| 全南县| 中超| 封开县| 芷江| 昌邑市| 灌阳县| 葵青区| 胶南市| 沂南县| 宜川县| 安国市|