The NoteBook of EricKong

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

          描述:

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

           

          回答:

          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以及靜態(tài)變量的方法都是不可靠的,因為作為一個開發(fā)者,你永遠不知道Android系統什么時候會殺掉你的進程來釋放內存,那些回調函數很可能根本沒機會被調用。

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

          posted on 2012-04-11 17:33 Eric_jiang 閱讀(9817) 評論(1)  編輯  收藏 所屬分類: Android
          主站蜘蛛池模板: 东光县| 巴南区| 石首市| 华安县| 商洛市| 聊城市| 桦川县| 阳东县| 闵行区| 翁源县| 黔江区| 开江县| 临洮县| 阿勒泰市| 龙岩市| 五华县| 湖南省| 湛江市| 临澧县| 成武县| 淳安县| 缙云县| 浦东新区| 中宁县| 托克逊县| 海南省| 峨边| 田林县| 介休市| 大竹县| 南涧| 石城县| 当雄县| 商河县| 建水县| 温州市| 来安县| 越西县| 城口县| 莎车县| 无极县|