Android永久服务

时间:2019-09-16 18:48:05

标签: android android-service

我需要您的帮助以了解有关android系统应用程序的一些概念。 鉴于以下条件:

  • 我需要开发一个具有可随时运行的服务的android应用
  • 该应用不会在Play商店上发布,仅供内部使用
  • 我能够将应用安装在/ system / app或/ system / priv-app
  • 我最终可以使用相同的固件证书来对我的应用进行签名

哪种侵入性最小的解决方案可以使我以操作系统将其视为一种系统服务的方式运行该服务?

在需要释放一些内存的情况下,将应用程序安装在/ system / app或/ system / priv-app中是否足以使操作系统给我的服务更重要?

我注意到在服务上使用START_STICKY可以使其在某些情况下得以生存,但是由于我可以与系统进行更深入的集成,所以我只是在徘徊我必须选择哪些选项以使其更加可靠

我还注意到清单中android:persistent="true"标签上的<application>,文档对此进行了说明:

  

应用程序是否应始终保持运行状态-   如果应该,则为“ true”,否则为“ false”。默认值为“ false”。   应用程序通常不应设置该标志;持续模式是   仅适用于某些系统应用程序。

何时将某个应用程序视为系统应用程序?将其安装在/ system / app或/ system / priv-app中是否足够?还是需要使用固件密钥签名?

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

据我了解,如果您想在后台运行您的应用程序(不显示用户界面),则可以使用前台服务。您需要向用户显示一条通知(例如,让用户知道您的应用正在后台运行)。在此处查看更多详细信息(https://developer.android.com/guide/components/services

与您使用固件密钥签署应用程序一样,我认为这是不可能的。您可以联系三星等类似的OEM或Google,将您的应用程序与固件映像打包在一起,以便将其作为系统应用程序进行部署-我再次怀疑,除非您在Facebook或Microsoft工作,编写下一代Office或Facebook应用程序。将您的应用程序部署为系统应用程序最简单的方法是将设备置于根目录。

我的2美分。...

答案 1 :(得分:0)

根据您为什么需要这样的服务,您可以在本机c中为自己编写一个守护程序,然后像su守护程序一样通过init启动它,否则几乎不可能实现100%持久服务。

您还可以执行类似于boot_completed或sms_received的操作,以使服务在需要时执行其工作并让其关闭。