返回顶部
首页 > 资讯 > 移动开发 >Android 如何保证service在后台不被kill
  • 877
分享到

Android 如何保证service在后台不被kill

servicekillAndroid 2022-06-06 04:06:44 877人浏览 安东尼
摘要

Android 其实无法做多绝对的不被后台kill掉,我们只能尽量使用一些操作提升不被kill的机会。 一、onStartCommand方法,返回START_STICKY &n

Android 其实无法做多绝对的不被后台kill掉,我们只能尽量使用一些操作提升不被kill的机会。

一、onStartCommand方法,返回START_STICKY

  START_STICKY 在运行onStartCommand后service进程被kill后,那将保留在开始状态,但是不保留那些传入的intent。不久后service就会再次尝试重新创建,因为保留在开始状态,在创建     service后将保证调用onstartCommand。如果没有传递任何开始命令给service,那将获取到null的intent。

  START_NOT_STICKY 在运行onStartCommand后service进程被kill后,并且没有新的intent传递给它。Service将移出开始状态,并且直到新的明显的方法(startService)调用才重新创建。因为如果没有传递任何未决定的intent那么service是不会启动,也就是期间onstartCommand不会接收到任何null的intent。

  START_REDELIVER_INTENT 在运行onStartCommand后service进程被kill后,系统将会再次启动service,并传入最后一个intent给onstartCommand。直到调用stopSelf(int)才停止传递intent。如果在被kill后还有未处理好的intent,那被kill后服务还是会自动启动。因此onstartCommand不会接收到任何null的intent。 

二、提升service优先级      

  在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = "1000"这个属性设置最高优先级,1000是最高值,如果数字越小则优先级越低,同时适用于广播。

三、提升service进程优先级

  Android中的进程是托管的,当系统进程空间紧张的时候,会依照优先级自动进行进程的回收。Android将进程分为6个等级,它们按优先级顺序由高到低依次是:

   1.前台进程( FOREGROUND_APP)

   2.可视进程(VISIBLE_APP )

   3.次要服务进程(SECONDARY_SERVER )  

   4.后台进程 (HIDDEN_APP)

   5.内容供应节点(CONTENT_PROVIDER)

   6.空进程(EMPTY_APP)

当service运行在低内存的环境时,将会kill掉一些存在的进程。因此进程的优先级将会很重要,可以使用startForeground 将service放到前台状态。这样在低内存时被kill的几率会低一些。

四、onDestory里面发送广播重启service

service +broadcast  方式,就是当service走ondestory的时候,发送一个自定义的广播,当收到广播的时候,重新启动service;

五、Application加上Persistent属性

六、监听系统广播判断Service状态

通过系统的一些广播,比如:手机重启、界面唤醒、应用状态改变等等监听并捕获到,然后判断我们的Service是否还存活,别忘记加权限啊。

七、双进程Service

让2个进程互相保护,其中一个Service被清理后,另外没被清理的进程可以立即重启进程

八、联系厂商,加入白名单

您可能感兴趣的文章:Android Service类与生命周期详细介绍详解Android中的ServiceAndroid IntentService详解及使用实例android使用NotificationListenerService监听通知栏消息Android实现微信自动向附近的人打招呼(AccessibilityService)Android AccessibilityService实现微信抢红包插件Android Service中使用Toast无法正常显示问题的解决方法Android基于service实现音乐的后台播放功能示例Android Service的启动过程分析


--结束END--

本文标题: Android 如何保证service在后台不被kill

本文链接: https://lsjlt.com/news/22321.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android 如何保证service在后台不被kill
    Android 其实无法做多绝对的不被后台kill掉,我们只能尽量使用一些操作提升不被kill的机会。 一、onStartCommand方法,返回START_STICKY &n...
    99+
    2022-06-06
    service kill Android
  • Android项目中如何避免service在后台中被kill掉
    这篇文章将为大家详细讲解有关Android项目中如何避免service在后台中被kill掉,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、onStartCommand方法,返回START_...
    99+
    2023-05-31
    android service kill
  • 如何让Android的service一直在后台运行?
    Service是Android四大组件之一,同时也是四大组件中和Activity最相似的组件,都代表着可执行的程序,他们的区别在于Service一直在后台运行,没有用户界面,一旦被启动就和Activiy一样拥有生命周期,一般来说,需要显示界...
    99+
    2023-06-04
  • DG如何保证归档日志不能随意被删除
    这篇文章主要为大家展示了“DG如何保证归档日志不能随意被删除”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“DG如何保证归档日志不能随意被删除”这篇文章吧。保证归...
    99+
    2024-04-02
  • C语言中的const如何保证变量不被修改
    这小段文章要理清楚的是,在C语言中,const是如何保证变量不被修改的? 我们可以想到两种方式: 第一种,由编译器来阻止修改const变量的语句,让这种程序不能通过编译; 第二种,由...
    99+
    2024-04-02
  • 如何保证网站的安全架构,不被黑客攻击
    1. 网站安全的攻与防互联网环境鱼龙混杂,网站被攻击是常见现象,所以了解一些常见的网站攻击手段十分必要。下面列举比较常见的 4 种攻击手段:1.1. 跨站脚本攻击(XSS)概念跨站脚本攻击(Cross-Site Scripting, XSS...
    99+
    2023-06-02
  • 如何解决php验证码后台不能生成的问题
    这篇文章将为大家详细讲解有关如何解决php验证码后台不能生成的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php验证码后台不能生成的解决办法:1、添加“header('Content-typ...
    99+
    2023-06-25
  • 解析Android中如何做到Service被关闭后又自动启动的实现方法
    首先要说的是,用户可能把这种做法视为流氓软件。大部分时候,程序员也不想把软件做成流氓软件,没办法,领导说了算。 我们在使用某些Android应用的时候,可能会发现安装了某应用以...
    99+
    2022-06-06
    自动 service 方法 启动 关闭 Android
  • 如何处理dedecms后台登录验证码不正常显示的问题
    本篇内容介绍了“如何处理dedecms后台登录验证码不正常显示的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:在登录dedecms...
    99+
    2023-06-07
  • MySQL视图在哪些地方可能会不一致,如何保证它们的一致性?
    在可更新视图的情况下,我们很可能更新通过视图不可见的数据,因为我们创建的视图仅显示表的部分数据。这种更新使得视图不一致。我们在创建或修改视图时可以通过使用WITH CHECK OPTION来保证视图的一致性。虽然WITH CHECK OPT...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作