问题标签 [foreground-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
989 浏览

android - 如何在前台运行 GcmListenerService

我的 GCM 服务有时会在我的智能手机的 RAM 被自动清除时关闭(如果您需要更多详细信息,请阅读此内容)。

据我了解,如果我将服务设置为在前台运行,它应该有助于系统使用 RAM 删除它。的方法Service.class onStartCommand()通常用于运行startForeground()方法。

但是对于最新版本的 GCM 实现,这是不可能的,因为onStartCommand()父方法GCMListenerService.class被定义为final,我无法覆盖它。

那么如何将我的 gcm 接收器设置为前台朗姆酒呢?

这是我关于 GCM 的清单部分。

先感谢您。

0 投票
1 回答
6380 浏览

java - 强制停止我的包后,Android 正在杀死我的前台服务

我已经为此苦苦挣扎了 2 周。

我正在开发一个控制通话时间的应用程序。

我收到一个广播,我启动前台服务挂断电话。

但是在五分钟或更长时间后,android force stop 我的包然后杀死了我的进程,导致服务崩溃 - 我认为 - (不知道为什么)没有崩溃消息或任何类型的错误。

它就消失了。

它计划重新启动,但它永远不会再次启动服务。

这是日志猫

使用adb shell dumpsysI got this 确保我的服务是具有正确优先级的前台服务

并在Process LRU list (sorted by oom_adj):部分

我没有将我的服务绑定到任何活动

我像这样开始我的服务:

这是我的onStartCommand

我正在像这样获得唤醒锁

我已经尝试了许多来自 SO 和 google 问题的解决方案,但对我来说没有任何效果。

我看到并尝试了所有这些:

被操作系统杀死的前台服务

前台服务每次都被杀死

Android前台服务在某些情况下被杀死

前台服务在通知单击时被杀死

前台服务被Android杀死

保留该应用的用户仅占总安装量的 30%。

我做错了什么?

0 投票
1 回答
2123 浏览

android - 获取前台应用 API 级别 21

由于ActivityManager.getRunningTasks已从 API 级别 21 弃用。所以我决定改用UsageStatsManager。但是getSystemService(USAGE_STATS_SERVICE)只能从 API 级别 22 获得。这意味着我只能在 API 级别 >= 22 和 <= 20 的设备中获取前台包名称。API 21 设备呢?

0 投票
1 回答
817 浏览

java - 如何在 Android 5.0 lollipop 中检测前台服务

出于安全原因,我正在开发一个分析用户行为的应用程序。我用这个片段编写了一个服务,它检测正在运行的设备中前台的所有服务,Android OS 4.4并将它们收集到一个列表中。

我在一个设备上尝试过一次Android OS 5.0,我注意到它没有检测到前台服务,比如runtastic's service foreground为这个 SDK 版本及更高版本构建的其他应用程序。它能否依赖于新的前台服务政策?

0 投票
1 回答
1822 浏览

android - 打盹模式暂停前台服务

我正在编写一个数据记录器应用程序,我需要每 5 分钟准确地发出一个 http 请求。用户知道电池耗尽,这对我来说没问题。我正在使用带有适当通知的前台服务,并且我有一个处理程序线程来女巫我每 5 分钟发布一次可运行的任务。似乎当手机进入打盹模式时,线程被挂起并且没有执行任何可运行的。这是正常行为还是我遗漏了什么?任何有关如何做到这一点的帮助将不胜感激。

启动线程的服务代码:

线程代码:

0 投票
2 回答
2468 浏览

java - Android:无法使用 null 启动服务:java.lang.NullPointerException

在开始之前,我想澄清一下,我已经阅读过类似主题的先前答案(主要是这个),即使在评论中给出的答案也对我不起作用(在 intent.getAction() 之前添加 intent != null没用)。

我正在尝试为玛雅星座做前台服务。该服务的目的是从 SQLite 数据库中读取星座符号和预测,并且每当它收到带有以下内容的文本消息时:“MAYA dd/MM/yyyy”(DOB),该服务将获取信息并发送自动发短信。我已经让它作为后台服务正常工作,但我想给它一个通知,以便用户可以看到该服务是否正在运行。

我已经按照其他教程(教程 1教程 2)制作了前台服务,并且它工作正常且没有错误。

我现在的问题是,每当我启动服务、停止服务并最终清除 ram(杀死应用程序)时,我总是在我的服务的第 57 行上得到 Nullpointer 异常(无论我有什么代码,它总是第 57 行)。在我的手机上,它给了我一条消息“不幸的是,HoroscopoMaya 已停止工作。” 两次!

清单.xml

MainActivity.java:

ServicioAstralMaya.java(服务):

常量.java

第 57 行是这样的:Log.i( TAG, "Servicio iniciado!" );

isRunning 和 bRunning 是检查服务是否正在运行,以便在 MainActivity 中显示状态:

并在服务中:public static boolean isRunning;

我什至尝试调用 stopService 并在方法中执行stopForeground(true);and ,但仍然无济于事。错误仍然是我的服务类的第 57 行。stopSelf();onDestroy()

日志猫:

我正在使用根植于三星 Grand Prime 的 Android Studio 2 运行 Android KitKat 4.4.4 (API 19)。

编辑

我不知道这是否有点相关,但我确实注意到了一些关于 Android Studio 的东西。无论我做了什么更改,当我运行应用程序时,我都会收到“无需更改部署”的通知

事件簿:

我已经更改了我的服务的代码,并且行错误仍然是 57,现在) )就在之后if( intent.getAction().equals( Constants.ACTION.START_FOREGROUND_ACTION

ServicioAstralMaya.java(服务):

此外,由于我已更改为 Android 2,因此我的 gradle 已更新,并且出现了这个奇怪的错误,我不得不将 build.gradle 中的 buildToolsVersion 从更改buildToolsVersion "24.0 rc2"buildToolsVersion "23.0.2"

构建.gradle:

0 投票
2 回答
2386 浏览

android - 如何避免在 Android M 上的电池/省电模式下停止我的前台服务

在我的应用程序中,我正在启动一个前台服务,并带有流式传输音乐的通知,但是当仅在 Android 6.0+ 上运行时打开省电模式 (Nexus) 或省电模式 (Samsung) 时,前台服务停止,因此音乐停止也是。

即使在省电模式下,有没有办法不停止前台服务?电池/省电模式的行为是否与打盹模式相似?

0 投票
1 回答
310 浏览

android - 具有异步任务的服务未启动

我正在使用下面的代码来启动服务。此服务应启动检查 mysql 并提供通知的异步任务。服务没有启动,我找不到原因?我没有收到来自服务的日志。(当我在没有服务的情况下直接从主要活动调用异步任务时,它工作正常)。

主要活动代码:

服务等级代码:

我还发现了一些解决方案,在主要活动中添加了以下命令,但该命令不适用于我的 android studio。

0 投票
1 回答
1903 浏览

android - 带有循环的Android服务?

我需要创建一个通过两个按钮启动和停止的后台服务。我的服务每 5 分钟循环一次,它会从在线数据库中获取数据。我在某处读到 IntentService 类不用于循环。我会覆盖 onStartCommand,所以它会返回 START_STICKY。如果我在这堂课上这样做,我的服务将不会启动。我怎样才能做到这一点?

0 投票
1 回答
527 浏览

android - Android:在后台连接到蓝牙 LE 设备

我正在尝试使用bleDevice.connectGatt(this, true, gattCallback)应用程序Application类连接到 BLE 外围设备。该设备只会每隔几个小时发送一次广告包。

只要应用程序处于打开/活动状态,它就可以正常工作。当我关闭显示器并等待几分钟然后打开外围设备时,gattCallback永远不会调用。

当蓝牙设备激活时,除了创建前台服务之外,还有其他方法可以唤醒应用程序吗?