1. 程式人生 > >判斷Service是否執行

判斷Service是否執行

後臺常駐服務, 有時候需要判斷Service是否在執行. 為此封裝成一個工具類.

有兩種方法:
  • 使用Android SDK API, 程式碼如下:
    /**
     * 判斷Service是否正在執行
     *
     * @param context     上下文
     * @param serviceName Service 類全名
     * @return true 表示正在執行,false 表示沒有執行
     */
    public static boolean isServiceRunning(Context context, String serviceName) {
        ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningServiceInfo> serviceInfoList = manager.getRunningServices(200
); if (serviceInfoList.size() <= 0) { return false; } for (ActivityManager.RunningServiceInfo info : serviceInfoList) { if (info.service.getClassName().equals(serviceName)) { return true; } } return false; }
  • 使用類成員變數, 然後對外提供public static 方法. 程式碼如下
  • //在 onCreate()方法或者, onStartCommand()方法中賦值
    public class TestService extends Service{
        private volatile static TestService service;
        @Override
        public void onCreate() {
            super.onCreate();
            //service = this;//這裡賦值
        }
    
        @Override
        public
    int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); //service = this;//也可以在這裡賦值 return START_STICKY; } @Override public void onDestroy() { super.onDestroy(); service = null;//這裡斷開強引用, 重置為null } /** * 服務是否存活 * * @return true: 存活 */ public static boolean isServiceRunning() { return service != null; } }

    相關推薦

    判斷Service是否執行

    後臺常駐服務, 有時候需要判斷Service是否在執行. 為此封裝成一個工具類. 有兩種方法: 使用Android SDK API, 程式碼如下: /** * 判斷Servic

    android 判斷service是否執行

    /** * 判斷服務是否正在執行 * * @param context * @param className 判斷的服務名字:包名+類名 * @return true在執行 false 不在執行 *

    Android中判斷service是否在執行

    /** * 判斷服務是否開啟 * * @return */ public static boolean isServiceRunning(Context context, String ServiceName) { if (TextUti

    android 判斷App程序是否存在,處在前臺,後臺,前後臺切換,service是否執行,設定為系統app

    1.判斷程序是否存在 //判斷是否在主程序,這個方法判斷程序名或者pid都可以,如果程序名一樣那pid肯定也一樣 //true:當前程序是主程序 false:當前程序不是主程序 public boolean isUIProcess() { ActivityManager

    Android判斷service是否在執行

    Android 中判斷某一指定的服務是否有在執行中,這裡使用ActivityManager例項來檢索正在執行的任務例項,獲取其元件名稱,然後通過與指定service的元件名稱進行比對。。。 程式碼如下: /** * @param

    Android判斷一個Service是否執行 對服務的判斷

    在開啟一個服務之前應該判斷該服務知否已經在執行 //本方法判斷自己些的一個Service-->com.android.controlAddFunctions.PhoneService是否已經執行 public static boolean isWorked()

    判斷Service是否正在執行

    原文地址: public static boolean isServiceRunning(Context mContext, String className) { boolean isRunning = false; ActivityManager activ

    Problem D: 判斷上三角矩陣

    #include<stdio.h> int main() { int n,a[10][10],i,j; while(scanf("%d",&n)!=EOF) { int flag=1; //flag用來做自動判斷 for(

    Android 點選通知欄訊息開啟activity,並判斷app是否執行

    android的通知欄訊息點選事件如果是開啟一個activity時,我們要考慮兩種情況: 應用正在前臺執行。 應用已退出。 如果是第一種情況那麼就好處理了,直接為Intent設定flag為FLAG_ACTIVITY_NEW_TASK,然後呼叫context.

    根據程序名判斷程序是否執行

    問題描述: 給定程序名,判斷該程序是否正在執行。 參考程式碼: #include <TlHelp32.h> BOOL IsProcessRunning(LPCTSTR lpProcessName) { if (NULL == lpProcessName)

    虛擬機器開啟時 ”VMware Authorization Service執行“或“無法連線 MKS: 套接字連線嘗試次數太多;正在放棄”。

    說明:可能你在升級或安裝Vmware的時候,不小心用360阻止了VMware的某個程式,可以用以下方法開啟。1.開啟windows工作管理員,選中“服務”選單欄,找到“VMware Authorizat

    垃圾回收之判斷物件需要被回收(根搜尋演算法和引用搜索演算法)

    根搜尋演算法(JAVA的虛擬機器用的是這個) 可以參考這個 http://blog.csdn.net/qq_15022971/article/details/79162126 引用搜索演算法:是常被初學JAVA者誤解,java的垃圾回收在判斷一個物件是否為可以被回收的物件時,常被誤以為

    .net 判斷程式是否執行在虛擬機器上 (方法2)

    前面寫過一種方法是用第三方的dll來判斷是否執行在虛擬機器中,但是那個方法只能在32位下執行。 http://blog.csdn.net/fhl812432059/article/details/51

    MFC程式唯一執行判斷(只能執行一個例項)

    方法一: BOOL CIrisApp::InitInstance() {     //加入程式唯一執行     ::CreateMutex(NULL,TRUE,m_pszExeName);     if(GetLastError()==ERROR_ALREADY_EXIST

    NSIS安裝過程中判斷程式是否執行中,FindProcDLL和KillProcDLL

    FindProcDLL::FindProc {process_name} 返回值: 0 - 未找到 1 - 找到 KillProcDLL::KillProc {process_name} 0

    service怎麼執行到非UI執行

    我們都知道android中service是執行在UI執行緒中的,怎樣讓service執行到非UI執行緒中?我知道service在註冊的時候可以通過android:process=":remote"指定service到remote的程序中,但是要讓service執行到非UI執

    Android - 判斷當前應用執行在前臺還是後臺

    判斷android當前執行在前臺還是後臺,有兩種解決方案: 第一種:當app1開啟顯示在最上面頁面時返回true, 但是當app1開啟執行在後臺,app開啟執行在最上面頁面時也返回true。 private boolean isTopActivity() { Activity

    js中動態載入js並且判斷載入完成執行回撥函式

    這一段js雖然很少,但是足以知道什麼是動態載入js了,像requirejs,seajs其實原理也就是這樣,下面發出自己寫的函式 <span style="font-size:18px;colo

    spring security 資源判斷時不執行自定義AccessDecisionManager

            弄這個框架的時候,因為這個問題困擾了很久,一直顯示無法進入AccessDecisionManager內,導致資源請求無法進行有效攔截,資料找了很久也並未找到合理解決方案,表示當時就腦子不夠用,及看不懂原始碼,又不懂原理,搭建都是靠人家的教程,一開始也看到了一

    android判斷service是否活著

    //本方法判斷自己些的一個Service-->come.xuexin.test是否已經執行   public static boolean isWorked()    {     ActivityManager myManager=(ActivityManager)context.getSystemS