android服務已經啟動卻判斷不出服務是否已經存在
阿新 • • 發佈:2019-02-02
在啟動一個android服務之前,先判斷這個服務是否已經啟動,網上有一個方法如下
private boolean isWorked(String className) { ActivityManager manager = (ActivityManager) getApplicationContext() .getSystemService(Context.ACTIVITY_SERVICE); ArrayList<RunningServiceInfo> runningService = (ArrayList<RunningServiceInfo>) manager .getRunningServices(256); for (int i = 0; i < runningService.size(); i++) { String mName = runningService.get(i).service.getClassName().toString(); if (mName.equals(className)) { return true; } } return false; }
這個方法沒有問題,能狗判斷出所有正在執行的服務,包括系統服務和應用開發者啟動的服務,
但是問題來了,為什麼自己啟動的服務已經啟動了卻判斷不出,原因在此,因為是在網上直接找的方法:ArrayList<RunningServiceInfo> runningService = (ArrayList<RunningServiceInfo>) manager.getRunningServices(30);getRunningService(30裡面寫的是30,原因是給的範圍太少,即便自己的service是在running,但是沒有被新增到這個集合當中,所以也就判斷不出,證據如下
自己寫的應用有沒有被啟動,如有不妥之處請留言,互相交流以促進學習,謝謝!