如何检查Android后台服务线程是否正在运行
5个回答
展开全部
public static ComponentName isServiceExisted(Context context,String packageName) {
ActivityManager activityManager = (ActivityManager) context.getSystemService("activity");
List serviceList = activityManager.getRunningServices(Integer.MAX_VALUE);
for (ActivityManager.RunningServiceInfo runningServiceInfo : serviceList) {
ComponentName serviceName = runningServiceInfo.service;//将Android后台正在运行的服务线程赋值给serviceName
if ((serviceName.getPackageName().equals(packageName))&& (serviceName.getClassName().equals(packageName+ ".business.RemoteSSOService"))) {//如果serviceName.getPackageName()等于(packageName)且 serviceName.getClassName()等于packageName加".business.RemoteSSOService"时说明有Android后台服务线程正在运行;
return serviceName; //有Android后台服务线程正在运行返回服务名称;
}
}
return null; //无Android后台服务线程正在运行返回空值;
}
ActivityManager activityManager = (ActivityManager) context.getSystemService("activity");
List serviceList = activityManager.getRunningServices(Integer.MAX_VALUE);
for (ActivityManager.RunningServiceInfo runningServiceInfo : serviceList) {
ComponentName serviceName = runningServiceInfo.service;//将Android后台正在运行的服务线程赋值给serviceName
if ((serviceName.getPackageName().equals(packageName))&& (serviceName.getClassName().equals(packageName+ ".business.RemoteSSOService"))) {//如果serviceName.getPackageName()等于(packageName)且 serviceName.getClassName()等于packageName加".business.RemoteSSOService"时说明有Android后台服务线程正在运行;
return serviceName; //有Android后台服务线程正在运行返回服务名称;
}
}
return null; //无Android后台服务线程正在运行返回空值;
}
展开全部
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后台服务.
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后台服务.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以看看内存运行里有没有,找不到就是隐藏了,安卓系统一定是在运行的,否则手机就运行不了软件,打不了电话了,你可以看看手机使用时间,安卓系统使用的时间及电量一定是最高的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用手机管家跟进就可以知道了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询