问题标签 [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 投票
0 回答
570 浏览

android - 我在前台的服务没有显示自定义通知android

我做了一项服务,我正试图在前台启动它。它有效,但问题是它只显示标准通知而不是我的自定义通知。显示的通知是标准通知,带有此标准消息“name_of_application 正在运行,如果您想了解更多信息,请单击此处”

我启动服务的活动代码是:

我的服务代码是:

我的自定义布局的代码是:

0 投票
0 回答
126 浏览

android - 为什么在 IntentService super.OnCreate 中删除通知 startForeground()

我正在继续进行 Android 研究,但我有一个问题。

我有这个意图服务:

为什么,在 onCreate() 函数中,如果我把函数 startForeground() 这样,在 super.onCreate() 之前初始化 foregroundservice,前台通知就会消失但是如果一个 put after 似乎有效?

0 投票
3 回答
734 浏览

android - 当应用程序被杀死时,前台服务在 Android 4.1 ~ 5.1.1 中立即被杀死

我有一项服务正在前台下载文件

当我滑动以终止应用程序时,该服务也被停止。我在 StackOverflow 上尝试了所有现有的解决方案,但没有一个有效。我尝试了 YouTube 应用,但它并没有终止它的服务。我如何做到这一点?谢谢。

0 投票
2 回答
773 浏览

android - 为什么我们不能在广播接收器类中调用 StopForeground() 方法?

我有一个广播接收器类,当我收到特定广播时,我想停止前台通知。所以我尝试context.stopForeground()了,但智能感知没有显示该方法。我们如何调用stopForeground()广播接收器类中的方法?

0 投票
1 回答
451 浏览

android - 单击电源按钮时,进程被 Android 操作系统杀死

环境: - Android 6.0,华为智能手机

我的应用程序是一个 IM 客户端,它必须与服务器保持连接并从中接收消息。所以我必须让它一直保持活力,只要网络连接可用。

我使用前台服务使我的应用程序在后台保持活跃。请参阅:android-keeping-a-background-service-alive-preventing-process-death此方法适用于 Android 4.1 和 4.4。但它在 Android 5.1 和 6.0 上失败。单击电源按钮后,应用程序进程大约 10 秒后被终止。

下面是重新制作的步骤。这是一个简单的演示应用程序,它启动一个线程来跟踪进程是被杀死还是活着。

  • 启动一个带有活动的 android 应用程序;
  • 启动一个日志线程以每秒记录一条消息;
  • 覆盖服务 onStartCommand() 方法,调用 startForeground() 并显示通知;

  • 单击按钮启动服务;

  • 按智能手机上的HOME/BACK键返回首页;
  • 按POWER键关闭屏幕;
  • 等待大约 10 秒,记录线程停止;

  • 单击应用程序图标以再次启动应用程序;

  • 日志线程启动,但其索引从 0 开始;并且 PID 已更改(请参见下面的屏幕截图)!

在此处输入图像描述

注意:我注意到一件奇怪的事情:当应用程序再次启动时,活动的 onCreate() 不会被调用!

任何帮助表示赞赏!提前致谢!

这是我启动服务的代码:

0 投票
0 回答
760 浏览

android - 即使应用程序被杀死,也要保持跟踪前台服务活着

我正在开发一个需要通过 GPS 跟踪用户的应用程序。我正在使用服务来控制位置,但是当我关闭应用程序并杀死它时,服务停止。我尝试使用通知栏连接服务,但问题仍然存在。我已经尝试了很多我在几篇文章中阅读过的解决方案,但我无法根据需要保持它的活力。我的目的是让服务一直运行,即使应用程序被终止。我不知道这是否可能。

在 mainActivity 我正在启动服务:

位置服务类:

0 投票
0 回答
1911 浏览

android - Android 7.0 和前台服务通知

我的应用程序使用在 6.0 及更低版本上运行良好的前台服务通知。在某些情况下,我使用此答案从状态栏和锁定屏幕中隐藏图标(我的应用程序有两种模式,一种是应用程序不需要永久通知用户的“后台”模式,另一种是“高度警报”模式我为此通知使用最高优先级)。

正如我所说,这在 Android 6.0 及更低版本上运行良好。但是在 Nougat 上,即使我的应用程序针对 API 级别 24(最低 API 级别 17)并使用所有内容的最新版本,此通知仍显示为正常通知。

我已经搜索了可能的解决方案,但由于 7.0 的相对新鲜度,没有太多信息。我注意到,即使在 7.0(其中之一是 AccuBattery)上,某些应用程序确实设法将其通知显示为最低优先级。

我使用以下代码来创建通知:

0 投票
0 回答
36 浏览

java - 如果有内容被复制,则执行

在前台服务中,我想这样做:如果用户在任何应用程序中复制某些内容,则使用该文本(在我的情况下它将是一个 url)作为一个函数。我想知道如果用户使用了复制功能,是否有办法做某事。

0 投票
1 回答
131 浏览

android - Android前台服务增加startId有什么影响?

我在我的 android 应用程序中使用前台服务。我正在覆盖服务的方法onStartCommand,如下所示:

正如文件所说:

每次客户端通过调用 startService(Intent) 显式启动服务时由系统调用,提供它提供的参数和表示启动请求的唯一整数令牌。

startId int:表示此特定启动请求的唯一整数。与 stopSelfResult(int) 一起使用。

我正在正确使用服务,并且服务工作正常。

我的问题是:

每次我启动服务时,startId 都会像文档所说的那样增加。我不清楚的是 startId 增加的影响是什么?它会占用更多内存还是会影响应用程序性能?(例如,如果 startId 增加超过 1000 怎么办?)

0 投票
3 回答
3894 浏览

android - 在华为 (GRA-UL00) 上终止前台服务 - 已启用受保护的应用程序

几个小时后,我的前台粘性服务在没有重新启动的情况下被终止。我知道这已经被问过几次了,我已经阅读并验证了我设备上的所有检查。需要注意的是,这似乎只发生在华为设备上。

因此,请允许我提供以下详细信息。

定期服务

定期警报管理器

定期报警接收器

应用

adb shell dumpsys 活动进程 > tmp.txt

tmp.txt 中的条目 =>“Proc #1: prcp T/S/SF trm: 0 14790:my.app.package.indentifier/u0a172 (fg-service)”

以上条目基于此处接受的答案:前台服务被 Android 杀死

在设置-> 高级设置-> 电池管理器-> 受保护的应用程序中将 MyApp 添加到受保护的应用程序列表(允许应用程序在屏幕关闭后继续运行)

设置->高级设置->电源计划(性能)中使用的性能(最低设置)

设备信息

型号:华为 GRA-UL00

EMUI版本:EMUI 4.0.1

安卓版本:6.0

其他注意事项:

内存不足,onTrimMemory 在终止之前不会被调用。无论如何,我将应用程序剥离到最低限度只是为了让应用程序在后台保持活动状态,因此这里的内存应该不是问题。

除非用户明确重新启动应用程序,否则粘性服务永远不会重新启动。

不调用警报管理器来重新启动/重新创建服务。setExactAndAllowWhileIdle() 也不起作用,并且应该无关紧要,因为该服务是前台优先服务,因此不应受打盹模式的影响。

服务在终止前最多只能运行 12 小时。发生这种情况时,电池电量超过 65%。

由于此应用程序用于研究项目,因此需要无限期地保持服务运行。

还有什么我可以做的吗,或者这是开发人员无能为力的特定华为 Android 修改。重申一下,这个问题只发生在华为设备上。

感谢对此的任何其他见解!