首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AOSP Android的永久后台服务?

AOSP Android的永久后台服务?
EN

Stack Overflow用户
提问于 2019-07-19 13:04:09
回答 2查看 1.9K关注 0票数 3

我正在开发一个Android应用程序,它将嵌入到我们的客户拥有的非移动设备上,并被我们客户的客户使用。我的老板正在为机器设想第二个应用程序,该应用程序在后台运行,并定期通过Service将有关设备的数据发送到后端。我使用过这种方法,虽然我知道它是不完美的,因为Android很容易在任意和不指定的时间杀死后台服务,即当它决定该服务已经过时或系统需要更多内存时。

也就是说,我们正在运行开源版本的Android (v5.1.1)。我在想,我的操作系统团队是否有什么可供选择的,对于那些为谷歌安卓( Google Android )构建应用程序的人来说,有没有什么办法可以消除那些典型的家事管理机制或已经关闭的自动重启应用程序?

EN

回答 2

Stack Overflow用户

发布于 2019-07-19 19:42:48

在清单中的android:persistent="true"标记上设置<application>

医生说:

应用程序是否应该在任何时候都保持运行--如果应该运行"true“,如果不应该,则"false”。默认值为"false“。应用程序通常不应设置此标志;持久性模式仅适用于某些系统应用程序。

为此,需要在系统分区上安装APK。它可能还需要在priv-app目录中,或者使用与系统相同的密钥进行签名(有些事情是这样做的;我不记得有这种特殊情况)。

请注意,您的Application.onCreate()将自动启动;您的Service不会自动启动。并不是你需要它;当你是persistent的时候,安卓系统不会(通常)杀死你的进程,所以你可以只运行正常的线程来做你需要做的事情。

最后,确保您没有泄漏内存。持久性应用程序会被很晚才被杀死(如果有的话..?)通过LMK,因此它可能会对您的设备的性能或稳定性产生不利影响。

票数 8
EN

Stack Overflow用户

发布于 2019-07-19 19:16:44

在我看来,你有三个选择:

  1. 修改Android OOMKiller以排除应用程序。不会推荐这个。
  2. 创建一个由SystemServer启动的Java服务
  3. 创建一个本机C "app“(二进制),它是在一个init.rc脚本。 ( CommonsWare注释建议的守护进程)中启动的。这样做的好处是,如果需要,可以作为root运行。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57113120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档