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
          主站蜘蛛池模板: 长春市| 岳普湖县| 南川市| 兰考县| 北流市| 墨玉县| 博湖县| 望都县| 枣阳市| 常德市| 苏尼特左旗| 苗栗市| 巴林右旗| 乌鲁木齐县| 安达市| 波密县| 巴东县| 乡城县| 囊谦县| 武夷山市| 蓝山县| 民乐县| 安泽县| 五寨县| 城步| 买车| 天水市| 武鸣县| 霞浦县| 苗栗市| 宜都市| 浙江省| 子洲县| 连江县| 南充市| 无极县| 五莲县| 习水县| 清河县| 阿坝县| 当雄县|