android - 前台服务中的静态变量
问题描述
我的问题很简单。我有一个前台服务,当它被激活时,它会无限期地运行,直到用户停止它。在我的 MainActivity 中,我需要知道服务是否正在运行(如果用户关闭应用程序但前台服务仍在运行,当他重新进入应用程序时,我需要知道服务是否已经在运行)。Service
在带有状态变量的伴随对象上是否可行,以便我可以访问它的状态?像这样的东西:
@AndroidEntryPoint
class SomeForegroundService: Service() {
companion object {
var status = 0
}
....
然后在我的某个地方MainActivity
...
SomeForegroundService.status == 1
这容易发生内存泄漏吗?有什么更好的解决方案(不包括检查每个正在运行的系统服务)
解决方案
您可以使用此方法检查服务是否正在运行,而不是静态变量
// check and return true if service is running
private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (TrackingService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
编辑:
如果您不想检查每个服务,您可以在服务中注册广播接收器并 ping 活动。
原始答案:如何检查服务是否在 Android 上运行?(本 H 的回答)
推荐阅读
- r - 基于变量运行定义序列,并使用来自另一个变量的附加条件
- codemirror - Codemirror-grammar 如何使关键字检查不区分大小写
- c# - 如何将 C 联合转换为 C#?
- mysql - 我应该什么时候关闭 MySQL 中的语句
- list - 如何在haskell中生成具有自己数据类型的列表
- xml - 如何为一周中的几天编写有效的 xsd ?
- java - 如何使用 ObjectMapper 从空 JSON 文件反序列化为 Java 对象
- litho - 如何在 LayoutSpec 或 Android 中的 XML 中添加 MountSpec 组件
- java - 使用递归插入二叉树
- python - Tensorflow:模块'tensorflow'没有属性'constant'