Android中如何判断service是否启动并停止

  • Post author:
  • Post category:其他


 /*
     * 判断服务是否启动,context上下文对象 ,className服务的name
     */
    public static boolean isServiceRunning(Context mContext, String className) {

        boolean isRunning = false;
        ActivityManager activityManager = (ActivityManager) mContext
                .getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningServiceInfo> serviceList = activityManager
                .getRunningServices(30);

        if (!(serviceList.size() > 0)) {
            return false;
        }
        Log.e("OnlineService:",className);
        for (int i = 0; i < serviceList.size(); i++) {
            Log.e("serviceName:",serviceList.get(i).service.getClassName());
            if (serviceList.get(i).service.getClassName().contains(className) == true) {
                isRunning = true;
                break;
            }
        }
        return isRunning;
    }

那么如何停止一个service呢?

stopService()和stopSelf()都可以停止通过startService()方式启动的service。

stopService需要传递startService(Intent service)时的intent对象作为参数,停止此intent对应的service。

stopSelf直接停止本service,不需要参数,在service中直接调用即可。

service退出时会调用onDestroy()函数,可以在此函数中进行释放等操作。例如执行MediaPlayer对象的release()并赋值为null,调用System.exit(0);退出应用程序等。