终止应用程序后保持后台服务运行

2024-01-25

我开发了一个运行后台服务的android应用程序,即使该应用程序被用户或由于某种原因杀死,我也需要该服务保持活动状态。我已经实现了该服务并在 onStartCommand 方法中添加 return START_STICKY ,如下所示:

public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);

    Log.d("my_state","On start command");

    return START_STICKY;
}

我还在 AndroidManifest.xml 中定义了服务,如下所示:

    <service android:name=".MeterDistanceCalcService"
        android:exported="true"
        android:enabled="true"
        android:stopWithTask="false"
        >

        <intent-filter>
            <action android:name="LONGRUNSERVICE" />
        </intent-filter>

    </service>

我注意到,在旧的 Android 版本(例如 Android 4.4.2)上,它工作正常并且服务保持活动状态,但在某些具有 Android 6.0 的设备上,它无法工作。设备是华为,

-设置->应用程序->(我的应用程序)->电池

当我将此权限切换为打开时,我发现“屏幕关闭后继续运行”权限,它开始按我想要的方式工作。我怎样才能向我的应用程序授予此权限或其他权限,这样该服务就不会被终止?


开发者文档 https://developer.android.com/guide/topics/manifest/service-element.html#isolated说你可以通过使用以下属性来实现此行为:

 android:isolatedProcess="true"

OR

 android:stopWithTask="false"

或同时使用

START_STICKY如果资源稀缺,就会被忽略。

通过使用android:stopWithTask="false"即使应用程序被破坏也不允许任务关闭

eg:

<service
        android:name=".ServiceName"
        android:process=":MYPROCESS"
        android:isolatedProcess="true"
        android:stopWithTask="false">
            <intent-filter>
                 <action android:name="PackageName.ServiceName" />
            </intent-filter>
  </service>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

终止应用程序后保持后台服务运行 的相关文章

随机推荐

  • 如何在 select2 插件中设置选择值 - jquery

    我使用此代码将数据插入到select元素与select2 plugin ajax type POST url ws asmx GetEvrakGrup data contentType application json charset ut
  • 从 varchar(max) 列中选择 XML

    我在 SQL Server 2005 上的 varchar max 列中存储了一些 XML 数据 数据采用以下形式 FQTN 完全限定类型名称
  • ConfigureWebHostDefaults 和ConfigureWebHost 方法之间有什么区别?

    我在通用主机构建器类上看到了 2 个几乎相同的扩展方法 HostBuilder ConfigureWebHostDefaults and ConfigureWebHost 它们具有相同的签名并位于不同的程序集中 我看见ConfigureWe
  • 如何通过 VBA 函数填充 Excel 工作表中的单元格?

    我只想通过 VBA 函数填充电子表格中的单元格 例如 我想在单元格中输入 FillHere 结果我将在一些单元格中填充一些数据 我尝试过这样的功能 Function FillHere Dim rngCaller As Range Set r
  • 如何在命令行上从 SVN 检出已删除的项目

    我正在尝试签出一个在版本 401 中从我的 SVN 中删除的项目 该项目现已失效 并已完全被代码重写所取代 但我想签出 以便我可以参考回来在重写时修改旧代码的小片段 据我所知 这应该像检查旧路径和最后一个好的修订版本 400 一样简单 但是
  • 如何关注WPF TabControl新添加的TabItem?

    我面临一个问题 我需要能够真正集中精力TabItem选项卡中的TabControl就像我会按TAB钥匙 我知道我可以使用SendKeys SendWait TAB 为了实现这一目标 但我更喜欢更强大的解决方案 选项卡项绑定到ItemSour
  • C 中的变量类型以及谁跟踪它

    我正在参加 MOOC 课程CS50 https www edx org course introduction computer science harvardx cs50x 来自哈佛大学 在第一堂课中 我们学习了不同数据类型的变量 int
  • iOS SecKeyRawVerify 返回-9809

    我用 openssl 创建了密钥对 openssl req x509 out public key der outform der new newkey rsa 1024 nodes keyout private key pem days
  • IE9 中的白屏问题 - 删除 iframe

    我想知道是否有人可以让我深入了解我一直在努力解决的一个非常奇怪的 IE9 问题 我正在完成一个工作网站的制作 它在 ff chrome ie7 ie8 中运行良好 没有脚本错误 在 IE9 上 应用程序的最后一步会导致整个选项卡变成白屏 并
  • Mac 上的 Sed 正则表达式问题,在 Linux 上工作正常

    这在 Linux Debian 上运行良好 sed e s t psd 在Mac上 我相信我必须使用 E标志 而不是 e sed E s t psd 但正则表达式不匹配 因此不会删除我想要的行 关于如何解决这个问题有什么建议吗 输入示例 a
  • 在Python中以编程方式创建变量[重复]

    这个问题在这里已经有答案了 可能的重复 如何以编程方式设置全局 模块 变量 https stackoverflow com questions 1429814 how to programmatically set a global mod
  • ASP.NET MVC4 中的 Ninject

    因此 经过一番折腾后 我终于将 Ninject 连接起来并在我的 MVC4 应用程序中进行编译 据我所知 我遇到的问题是 IDependencyScope 接口不再存在 并且 System Web Http Dependency 命名空间已
  • 计算圆与通过中心的直线的交点

    我如何获得直线和圆的交点 我有很多关于这个主题的信息 但我的要求不匹配 我得到了一条线 其一个端点位于圆的原点 而另一端位于圆之外的某处 现在我需要这条线和圆的交点 我尝试使用下面的公式从圆外找到最近的边缘点 但无法破解它 closestC
  • 检查 JavaScript setTimeout 是否已触发

    我希望能够通过 JavaScript 分派大量工作在浏览器中完成 从而使浏览器始终保持响应能力 我尝试采取的方法是将工作分块 将每个块传递给一个函数 然后用一个函数排队setTimeout func 0 call 我需要知道所有工作何时完成
  • 使用嵌入、对象或 iframe 方法更改 PDF 查看器中的背景颜色

    我一直在尝试不同的显示 PDF 的方法 目的是找到一种方法将灰色背景更改为白色 这是一个使用对象标签的简单示例 我使用嵌入和 iframe 标签得到相同的结果 http jsfiddle net 5CALy 7 http jsfiddle
  • 如何将 Flask/Peewee 与 Heroku 一起使用?

    我正在尝试部署一个Flask http flask pocoo org app to Heroku http www heroku com 我在用着Peewee http peewee readthedocs org en latest 作
  • “[HMR] 正在等待来自 WDS 的更新信号...”到底是什么意思 [重复]

    这个问题在这里已经有答案了 有谁知道它是什么 因为它相当烦人 而且我不希望它稍后在我的应用程序中引起问题 我正在使用 React 它在端口 5000 上运行 我正在使用 socket io 等制作一个在线聊天应用程序 Thanks 该消息适
  • RTP 视频流:是否必须存在 SDP 文件?

    我已经实现了原始 rtp 流 我想使用 VLC 或 Mplayer 来播放它 但视频播放器似乎无法播放此流 例如 MPlayer 说 Stream not seekable Stray packet seq 6 1013 seq 987 n
  • 如何在 rmmod 上停止 Linux 内核线程?

    我编写了以下代码来创建内核线程 include
  • 终止应用程序后保持后台服务运行

    我开发了一个运行后台服务的android应用程序 即使该应用程序被用户或由于某种原因杀死 我也需要该服务保持活动状态 我已经实现了该服务并在 onStartCommand 方法中添加 return START STICKY 如下所示 pub