Android——判斷Service是否已經啟動,android判斷service
延續百度地圖定位的Demo,採用Service來進行百度定位,並且將資料上傳到伺服器上遇到了一個問題:在真機中使用清理記憶體來關閉程式的之後,Service會被關閉,但是過幾秒中,它又會自動重啟;重啟就算了,而且再次登陸系統的時候,又會開啟一個一樣的服務,在LogCat中就會看到每次都擷取到兩次的定位元據。然後想想是否可以在建立Service之前判斷這個服務有沒有被建立?只要能做這個判斷,那麼服務存在我們就不管它,如果不存在則建立,本著這個思路,百度發現可行(Service後台服務建立時最好都要判斷是否存在),代碼如下:
private boolean isWorked(String className) {ActivityManager myManager = (ActivityManager) LoginActivity.this.getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);ArrayList<RunningServiceInfo> runningService = (ArrayList<RunningServiceInfo>) 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");// 啟動ServicestartService(intent);}else{Log.i("info", "服務已經啟動了!!");}
android 怎判斷service是否已經停止
// 檢測服務是否正在運行
private boolean isServiceRunning(Context context, String service_Name) {
ActivityManager manager =
(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
{
if (service_Name.equals(service.service.getClassName()))
{
return true;
}
}
return false;
}
android判斷service是否運行
在開啟一個服務之前應該判斷該服務知否已經在運行 //本方法判斷自己些的一個Service-->com.android.controlAddFunctions.PhoneService是否已經運行 public static boolean isWorked() { ActivityManager myManager=(ActivityManager)context.getSystemService(Co ntext.ACTIVITY_SERVICE); ArrayList<RunningServiceInfo> runningService = (ArrayList<RunningServi ceInfo>) myManager.getRunningServices(30); for(int i = 0 ; i<runningService.size();i++) { if(runningService.get(i).service.getClassName().toString().equals("c om.android.controlAddFunctions.PhoneService")) { return true; } } return false; }