如何检查Android后台服务线程是不是正在运行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查Android后台服务线程是不是正在运行相关的知识,希望对你有一定的参考价值。
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后台服务线程正在运行返回空值;
参考技术A 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后台服务.本回答被提问者和网友采纳 参考技术B 可以看看内存运行里有没有,找不到就是隐藏了,安卓系统一定是在运行的,否则手机就运行不了软件,打不了电话了,你可以看看手机使用时间,安卓系统使用的时间及电量一定是最高的。 参考技术C 用腾讯手机管家检测 参考技术D 使用手机管家跟进就可以知道了
快速的后台工作
【中文标题】快速的后台工作【英文标题】:Swift background work 【发布时间】:2018-05-29 12:53:45 【问题描述】:我是 iOS 开发新手,我在当前项目中使用 Swift。 我正在尝试实现我在 Android 中所做的类似事情。我正在尝试在应用程序关闭/最小化时运行后台服务,该服务将每 2 秒执行一次,以让用户知道应用程序仍在后台运行并检查服务器的状态。
我怎样才能做到这一点?我试过使用“后台获取”方法,但它不是每 2 秒执行一次。
如果重要,后台服务将运行不超过 5 分钟。
【问题讨论】:
【参考方案1】:不,你不能那样做。您可以做的是,在 applicationDidEnterBackground 中调用一个服务,让您的服务器知道您的应用程序处于后台或被杀死(您将获得非常少的时间来执行此操作,大约 3-5 秒.).
【讨论】:
【参考方案2】:您所描述的 Android 应用可能会过早耗尽设备的电池电量。这就是为什么 Apple 将后台执行限制为一组明确定义的任务的简单原因:
在后台向用户播放有声内容的应用,例如音乐播放器应用 在后台录制音频内容的应用程序 让用户随时了解其位置的应用,例如导航应用 支持互联网协议语音 (VoIP) 的应用 需要定期下载和处理新内容的应用 从外部附件接收定期更新的应用此列表摘自苹果官方对后台任务的描述:Background Execution。
【讨论】:
以上是关于如何检查Android后台服务线程是不是正在运行的主要内容,如果未能解决你的问题,请参考以下文章