Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android——判斷Service是否已經啟動

Android——判斷Service是否已經啟動

編輯:關於Android編程

延續百度地圖定位的Demo,采用Service來進行百度定位,並且將數據上傳到服務器上遇到了一個問題:在真機中使用清理內存來關閉程序的之後,Service會被關閉,但是過幾秒中,它又會自動重啟;重啟就算了,而且再次登陸系統的時候,又會開啟一個一樣的服務,在LogCat中就會看到每次都獲取到兩次的定位數據。然後想想是否可以在建立Service之前判斷這個服務有沒有被創建?只要能做這個判斷,那麼服務存在我們就不管它,如果不存在則創建,本著這個思路,百度發現可行(Service後台服務創建時最好都要判斷是否存在),代碼如下:


private boolean isWorked(String className) {
			ActivityManager myManager = (ActivityManager) LoginActivity.this
					.getApplicationContext().getSystemService(
							Context.ACTIVITY_SERVICE);
			ArrayList runningService = (ArrayList) myManager
					.getRunningServices(30);
			for (int i = 0; i < runningService.size(); i++) {
				if (runningService.get(i).service.getClassName().toString()
						.equals(className)) {
					return true;
				}
			}
			return false;
		}

判斷過程:

if(!this.isWorked("包.服務名")){
					Intent intent = new Intent();
					intent.setAction("該服務組件的intent-filter的action");
					// 啟動Service
					startService(intent);
				}
				else{
					Log.i("info", "服務已經啟動了!!");
				}





  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved