判断Service是否运行
16lz
2021-01-26
后台常驻服务, 有时候需要判断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; }
//在 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; }}
更多相关文章
- View点击涟漪效果
- Android(安卓)两种串口实现方法总结
- 在Android中 使用 java.net.URI 与 android.net.Uri 的区别
- android onClick事件的不同写法
- Android(安卓)2017最新面试题 深圳华为 腾讯 中兴 腾讯详细解析
- Android开发——AsyncTask的使用以及源码解析
- Android(安卓)事件分发机制详解
- Vue和iOS、Android交互
- Android系统服务初始化源码分析