如何检查Android后台服务线程(Service类)是否正在运行

描述:

如何检查后台服务(Android的Service类)是否正在运行?我希望我的Activity能够显示Service的状态,然后我可以打开或者关闭它。

回答:

Android系统提供了一个函数ActivityManager.getRunningServices可以列出当前正在运行的后台服务线程

private boolean isServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if ("com.example.MyService".equals(service.service.getClassName())) {
return true;
}
}
return false;
}

这个方法是可靠的,因为这是由Android系统提供的服务查询办法。
所以以来于OnDestroy或者OnXXX方法,甚或是Binders以及静态变量的方法都是不可靠的,因为作为一个开发者,你永远不知道Android系统什么时候会杀掉你的进程来释放内存,那些回调函数很可能根本没机会被调用。

另外,关于如果希望手工检查所有后台服务的运行状态,见如何观察和控制正在运行的Android后台服务.

更多相关文章

  1. 在android studio中用SQLiteOpenHelper()方法建立数据库
  2. Android中显示Dialog的方法
  3. [Android] 线程间交互
  4. 麦子学院android老师分享android实现listview异步加载图片的方法
  5. Android 更新UI的两种方法——handler和runOnUiThread(
  6. android在一个app程序中,打开另一个app的方法
  7. Android 查看SHA1值的方法

随机推荐

  1. Android基本命令
  2. Android毛玻璃效果
  3. 混合开发:Android的WebView加载H5,和H5的
  4. [Android]ListView性能优化之视图缓存
  5. Android内存管理机制
  6. 第1部分 Android开发环境搭建
  7. Android方向传感器实践——自己动手做指
  8. Android(安卓)开发中使用 SQLite 数据库
  9. android 高性能编程
  10. Android(安卓)动画具体解释View动画