首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

应用保活终极总结(二):Android6.0及以上的保活实践(进程防杀篇)

因保活防杀和被杀复活涉及内容较多,我将它分成了两篇:即进程防杀篇(本文)和进程被杀复活篇(下篇),本篇将讨论如何实现进程防杀。...说起来比较绕口,总之本文要讨论的内容是如何防止Android应用被系统“杀掉”,下篇讨论的是“被杀掉”后如何让它复活。...接下来我将首先分析市面上的主流APP防杀方式,为我接下来的方案提供参考依据,请继续往下阅读。 5、市场主流运动类APP保活分析:咕咚(v 7.17.0) 5.1 一键清理/滑动清理 a....9、APP进程防杀方案第一阶:开启前台Service,“逼君上位” 将Service置为前台,目的时提高进程Service的oom_adj值,以降低其被系统回收的几率。...运行在名为“com.jiangdg.keepappalive:daemon_service”进程中;android:enabled属性的作用是Android系统是否实例化应用程序中的组件;android

4.2K21

【Android 应用开发】Android 杀进程总结 ( 杀后台进程 | 杀前台进程 | 杀其它进程 )

文章目录 一、Android 杀后台进程 二、Android 杀前台进程 三、Android 杀其它进程 一、Android 杀后台进程 ---- 使用 Android 的进程 api 类 android.os.Process..., 这是 Android 系统本身的机制 ; 注意 : 调用该方法杀死的应用 , 不能处于前台任务栈中 ; 使用 Java 的进程 api 类 java.lang.System 杀死进程 : 参数中传入..., 应用进程会重新启动 ; 二、Android 杀前台进程 ---- 关闭了所有的 Activity 界面窗口 , 应用进程自然就被杀死了 ; activity.finishAffinity(); 上述代码可以关闭所有的本任务栈内的..., 然后使用 killBackgroundProcesses 方法杀死后台的其它进程 ; ActivityManager activityManager = (ActivityManager) getSystemService...权限 ; 在清单文件中配置该权限 : android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>

2.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    超详细,Android AMS面试攻略,带你突破面试难关

    AMS初始化:AMS会初始化各种数据结构和状态,并开始监听来自系统的消息和请求。 详细解析: Zygote是Android系统中的一个特殊进程,它负责为系统创建其他应用程序进程。...生命周期管理 问题: AMS是如何管理应用程序的生命周期的? 出发点: 这个问题考察面试者对于Android应用程序生命周期管理机制的理解,以及AMS如何根据系统状态调度应用程序的进程和组件。...前台进程拥有最高的优先级,不容易被系统回收。...通常情况下,系统会保持至少一个前台进程,以确保用户体验;当系统内存不足时,AMS会优先杀死后台进程,以释放内存资源。 其它 问题: Android中的内存管理机制是怎样的?AMS是如何参与其中的?...启动过程交给AMS: 系统将启动请求交给AMS处理,AMS会根据启动模式等信息来判断是否需要创建新的进程以及如何启动Activity。

    74110

    Android 进程保活招式大全

    通常在任意给定时间前台进程都为数不多。只有在内存不足以支持它们同时继续运行这一万不得已的情况下,系统才会终止它们。 A. 拥有用户正在交互的 Activity(已调用 onResume()) B....方案实现挑战 从 Android2.3 开始调用 setForeground 将后台 Service 设置为前台 Service 时,必须在系统的通知栏发送一条通知,也就是前台 Service 与一条可见的通知时绑定在一起的...而且,通过 Linux 的 fork 机制创建的进程为纯 Linux 进程,其生命周期不受 Android 的管理。 4.4.2. 方案实现挑战 挑战一:在 Native 进程中如何感知主进程死亡。...方案适用范围 该方案主要适用于 Android5.0 以下版本手机。 该方案不受 forcestop 影响,被强制停止的应用依然可以被拉活,在 Android5.0 以下版本拉活效果非常好。...该方案在 Android5.0 以上版本中不受 forcestop 影响,被强制停止的应用依然可以被拉活,在 Android5.0 以上版本拉活效果非常好。

    3.2K70

    Android内存管理(八)内存管理小结

    内存优化工具介绍 Android常见的内存问题及解决方案 内存优化的体系的建设 内存问题总结及思考 今天从操作系统的角度来闲聊一下代码开发过程中如何配合系统做内存管理。...只有在内存不足以支持它们同时继续运行这一万不得已的情况下,系统才会终止它们。 2)可见进程(Visible process) 没有任何前台组件、但仍会影响用户在屏幕上所见内容的进程。...可见进程被视为是极其重要的进程,除非为了维持所有前台进程同时运行而必须终止,否则系统不会终止这些进程。...回收收益 当Android系统开始杀死LRU缓存中的进程时,系统会判断每个进程杀死后带来的回收收益。因为Android总是倾向于杀死一个能回收更多内存的进程,从而可以杀死更少的进程,来获取更多的内存。...因此,在开发过程中要做到: 避免创建不必要的对象。 在合适的生命周期中,合理的管理资源。 在系统内存不足时,主动释放更多的资源。 开发时,应该如何注意App的内存管理呢?

    1.6K20

    Android进程保活-自“裁”或者耍流氓

    App操作影响进程优先级 本篇文章是后台杀死系列的最后一篇,主要探讨一下进程的保活,Android本身设计的时候是非常善良的,它希望进程在不可见或者其他一些场景下APP要懂得主动释放,可是Android...低估了”贪婪“,尤其是很多国产APP,只希望索取来提高自己的性能,不管其他APP或者系统的死活,导致了很严重的资源浪费,这也是Android被iOS诟病的最大原因。...p->oomkilladj(越小越重要) 2、降低APP的内存占用量,在oom_adj相同的时候,会优先干掉内存消耗大的进程 不过大多数情况下,Android对于进程优先级的管理都是比较合理,即使某些场景需要特殊手段提高优先级...,Android也是给了参考方案的,比如音频播放,UI隐藏的时候,需要将Sevice进程设置成特定的优先级防止被后台杀死,比如一些备份的进程也需要一些特殊处理,但是这些都是在Android允许的范围内的...onTrimeMemory的回调时机及内存裁剪等级 OnTrimMemory是在Android 4.0引入的一个回调接口,其主要作用就是通知应用程序在不同的场景下进行自我瘦身,释放内存,降低被后台杀死的风险

    2.2K10

    跟上脚步,进入后台执行新时代

    随着近几年来 Android 的不断发展,Google 逐步加强了对于后台执行的优化和限制。为了开发出现代化的 Android 应用,开发者需要学习如何通过最新方式来管理后台任务。...系统如何判定应用处于后台? 在理解后台执行这个概念之前,我们先来看看 Android 系统是如何定义前台应用的。...为了改善续航表现和用户体验,Android 在版本演进的过程中,针对后台执行进行了不同程度的限制,其中包括: 低耗电模式和应用待机模式: 如果设备未插接电源,处于空闲状态一段时间且屏幕关闭,系统会进入低耗电或者待机模式...如果应用需要立刻执行一个由用户发起的任务,即使用户退出应用或关闭屏幕 (如音乐/视频重放或者导航) 也不会影响任务的执行,请您使用前台服务。(我们将在下一篇连载中深度剖析该使用案例,敬请期待!)...常见的定时任务包括: 服药提醒 电视节目开始前,向用户发送的提醒通知 在触发标准闹铃后,您会有几秒钟的时间完成工作,此时应用可能无法访问网络 (例如,系统处于低耗电模式,或者应用被归入某一待机群组)。

    2.6K30

    Android内存管理(六)Android对Linux系统的内存管理机制进行的优化

    Android系统回收后台进程的参考条件: LRU算法:自下而上开始终止,先回收最老的进程。越老的进程近期内被用户再次使用的几率越低。杀死的进程越老,对用户体验的影响就越小。...在一个健康的系统中,只有缓存进程或者空进程会被系统随时终止,如果服务进程,或者更高优先级的可见进程以及前台进程也开始被系统终止(不包括应用本身糟糕的内存使用导致OOM),那就说明系统运行已经处于一个亚健康甚至极不健康的状态...从Android 8.0开始,出于节省系统资源、优化用户体验、提高电池续航能力的考量,系统进行了前台/后台应用的区分,对于后台service进行了一些限制。...Android系统如何评定进程的优先级 根据进程中当前活动组件的重要程度,Android 会将进程评定为它可能达到的最高级别。...例如,一个文件上传的操作就可以考虑使用服务来完成,这样一来,即使用户退出 Activity,仍可在后台继续执行上传操作。

    1.6K10

    现代 WorkManager API 已发布

    再比如您想将一段精彩的 Vlog 分享到社交媒体,肯定也会希望视频上传时不会影响到自己继续使用设备。这就涉及到了我们今天分享的主题: 使用 WorkManager 管理后台和前台工作。...这个过程是具有先后次序的,也就是上传工作依赖渲染工作的完成。...立即执行 现在,当您的应用处于前台时,您可以请求立即执行某项工作。随后即便应用被置于后台,这项工作也不会被中断,而是继续进行。...所以,即使用户切换到别的应用去使用,您的应用仍然可以继续实现为照片添加滤镜、保存到本地、上传等一系列工作。 对于大型应用的开发商来说,他们需要在优化资源使用方面投入更多的资源和精力。...在早于 Android 12 的 API 版本中,加急工作都是由前台服务执行的,而从 Android 12 开始,它们将由加急作业 (expedited job) 实现。

    1.3K20

    Service服务详解以及如何使service服务不被杀死

    Services   服务是一个应用程序组件,可以在后台执行长时间运行的操作,不提供用户界面。一个应用程序组件可以启动一个服务,它将继续在后台运行,即使用户切换到另一个应用程序。...一旦开启,该服务就可以无限期地在后台运行,哪怕开启它的组件被销毁掉。 通常,开启的服务执行一个单独的操作且并不向调用者返回一个结果。 比如,可能从网络进行下载或者上传一个文件。...android:process 服务运行所在的进程名。通常为默认为应用程序所在的进程,与包名同名。...  前台服务是被认为是用户已知的正在运行的服务,当系统需要释放内存时不会优先杀掉该进程。...(),终止于onDestory() 服务的开关过程,只有onStartCommand()可多次调用,其他在一个生命周期只调用一次。

    4.4K11

    浅析UIApplication生命周期的一些delegate方法

    home键杀死后台程序 如果从其他程序的前台,双击home键杀死后台程序,被杀死程序只会回调delegate即将退出的方法。...重点来了:如果一个应用程序失去焦点那么意味着用户当前无法进行交互操作,正因如此,程序从前台退出到后台时候,一般会**先失去焦点再进入后台**避免进入后台过程中用户还可以和程序进行交互。...同理,一个应用程序从后台进入前台也是类似的,会**先进入前台再获得焦点**,这样进入前台过程中未完全准备好的情况下用户无法操作,保证了程序的安全性。...另外一般如果**应用程序要保存用户数据会在程序将要失去焦点的方法中进行 (而不是在已经进入后台的方法中执行)**,因为如果用户双击Home不会进入后台只会注销激活。...同理,如果用户恢复应用状态一般在已经获的焦点的方法中执行(而不是在将要进入前台的方法中执行)。

    8.2K30

    Android性能优化系列---管理你的app内存(一)

    本文描述了Android如何管理app进程和内存分配,以及当你进行android开发时如何减少内存使用。至于Java里通用的资源释放方式请参看其他相关文档。...这不仅让同样的数据在进程间共享,也允许在需要的时候被调出。...当app进程从前台到后台时怎么被缓存以及android决定杀死哪一个后台进程,更多的信息请参考Processes and Threads(http://developer.android.com/guide...虽然你的应用不会处于被杀的高风险中, 但是系统已经开始清除缓存列表中的其它应用, 所以你必须释放容易恢复的资源使你的应用继续存留在列表中以便用户再次回到你的应用时能快速恢复。...属性的值为 "true",即使这种情况下,你也应该尽可能的避免这种需求.

    1.4K30

    NDK--双进程守护之利用线程轮询实现APP保活

    3.android:persistent="true" 网上还提出了设置这个属性的办法,通过实验发现即使设置了这个属性,应用程序被kill之后还是不能重新启动起来的!...由于之前的方法都不靠谱,双进程守护成为APP保活比较好的办法 在Java中开启双进程: 在组件中声明 android:process=":remote" 字段,Android系统会为我们开辟一个进程并且把这个组件丢到该进程中...手机厂商不会允许这样的情况出现,Android系统在java层提出了双进程方案, 大部分手机厂商也会针对于系统源码进行修改。...新创建的线程从thread_rt函数的地址开始运行, // 该函数只有一个无类型指针参数arg。...可以发现守护进程已经起来了,它的父进程pid为20605,我们手动杀掉APP,再使用ps命令查看进程 ? 发现成功的拉起的服务,在服务中打印的日志也正常从头开始打印 ?

    1.7K20

    Android 黑科技保活实现原理揭秘

    譬如说在 Android 5.0 以前,App 内部通过 native 方式 fork 出来的进程是不受系统管控的,系统在杀 App 进程的时候,只会去杀 App 启动的 Java 进程;因此诞生了一大批...Android 7.0 加强了之前鸡肋的待机模式(不再要求设备静止状态),同时对开启了 Project Svelte,Project Svelte 是专门用来优化 Android 系统后台的项目,在 Android...另外,系统会限制未在前台运行的应用的某些行为,比如说应用的后台服务的访问受到限制,也无法使用 Mainifest 注册大部分隐式广播。...不过好景不长,进入 Android 8.0 时代之后,这个库就逐渐消亡。 一般来说,Android 进程保活分为两个方面: 保持进程不被系统杀死。 进程被系统杀死之后,可以重新复活。...,然后清理残留在 system_server 内的四大组件信息;我们关心进程是如何被杀死的,因此继续跟踪killPackageProcessesLocked,这个方法最终会调用到 ProcessList

    1.5K30

    Java代码审计初试

    免杀是同所有的检测手段的对抗,目前免杀的思路比较多。本篇介绍了一个独特的思路,通过内存解密恶意代码执行,解决了内存中恶意代码特征的检测。...所以即使项目使用了存在漏洞版本的组件,也不代表就一定存在相应漏洞 web.xml 只配置了两个filter过滤器,一个是配置了对字符进行编码,另一个是使页面具有统一布局,没有看到对XSS和sql注入的过滤器...articelId=1 sqlmap跑一下 前台SQL注入 同样在CourseFavoritesMapper.xml中找到${}传参语句 然后找到调用该mapper的地方 路径为/uc/deleteFaveorite...查看,将数据插入到edu_question表中 在整个插入数据的过程中,都没有对数据进行过滤 接着看输出部分,访问问答页面时触发XSS 根据路由questions/list定位到jsp文件 搜索...的情况下,抓包修改userId为70,并修改userName 然后登录test1账号,发现个人信息被修改 总结 本文涉及漏洞有限,审计漏洞也不够全面,主要是学习SSM框架的代码审计过程记录,在审计中意识到某些漏洞单纯通过白盒的方式难以发现

    35210

    Android高频面试专题 - 基础篇(三)Service

    2、Service和Thread 看下官网对Service的介绍:服务是可以在后台执行长时间运行的操作的应用程序组件,并且不提供用户界面。...6、onStartCommand()返回值的含义 START_STICKY=1:如果 service 进程被 kill 掉,保留 service 的状态为开始状态,但不保留递送的 intent 对象。...7、onRebind()什么时候被调用 首先前提是onUnbind()方法返回true,此前该服务的所有的绑定已经unBind(), 然后在新的客户端已连接到该服务时就会调用。 8、前台服务是什么?...如何启动 前台服务是用户可感知的,前台服务与Notification共存亡,启动前台服务通过startForeground(int id, Notification notification)传入一个通知...startActivity, 可以,必须添加FLAG_ACTIVITY_NEW_TASK 发广播,可以直接使用 10、如何提高服务的优先级 设置为前台广播,也是最有效的,之前灰色保活方案使用过 设置优先级

    74421

    Android进程永生技术终极揭秘:进程被杀底层原理、APP应对被杀技巧

    可惜在短短的几十个小时后,就在一股神秘力量的干预下被强行删除了。。。...▲ 这台手机,应该能勾起很多老Android程序员的回忆 譬如说在 Android 5.0 以前,App 内部通过 native 方式 fork 出来的进程是不受系统管控的,系统在杀 App 进程的时候...比如以下这几篇中介绍的Android保活方法: 《应用保活终极总结(一):Android6.0以下的双进程守护保活实践》 《应用保活终极总结(二):Android6.0及以上的保活实践(进程防杀篇)》...不知道大家有没有玩过打地鼠这个游戏,整个过程非常类似,按下去一个又冒出一个,只要每次都能足够快地冒出来,我们就赢了。 现在问题的关键就在于:如何在 5ms 内启动一堆新的进程?...想象一下你现在是一个信使有重要军情要报告,但是在路上却碰到很多关隘,而且很可能被勒令暂时停止一下,这种情况是不可接受的。

    4K11

    Android面试

    Android开发中何时使用多进程 要想知道如何使用多进程,先要知道Android里的多进程概念。一般情况下,一个应用程序就是一个进程,这个进程名称就是应用程序包名。...若处理失败就继续向上传递。...()方法机会判断,若上次的事件由下面的view成功处理了,那么这次的事件就继续交给下面的来处理,若上次的事件没有被下面的处理成功,那么这次的事件就不会向下传递了,该View直接调用自己的onTouchEvent...如何通过一套标准及统一的接口获取其他应用程序暴露的数据?...()方法对事件拦截,停止其向子view传递 如果事件从上往下传递过程中一直没有被停止,且最底层子View没有消费事件,事件会反向往上传递,这时父View(ViewGroup)可以进行消费,如果还是没有被消费的话

    1K50

    QQ 音乐 Android 吃 Pie 之路

    一、全面屏检测 在 Android 8.0 时代各个手机厂商就开始发布自己的全面屏手机,但是此时 Android 官方并未支持到该功能,所以各个厂商都各自实现了一套全面屏判断逻辑,对于开发者来说甚是麻烦...该 API 调用查看 v7 support 包源码可以发现已经被 try-catch 住了,测试了相关类也可以正常运行,而且在适配过程中升级 rc 版本的 support-v7 包会导致应用编译不过,所以目前...针对 Android O 和之上的应用无法继续在其清单中为隐式广播注册广播接收器。...在某些应用中为了识别手机的唯一性可能会用到 Build.SERIAL 这个标识,但这个标识在 Android P 中已经被设置成了 UNKNOWN,所以会直接导致该功能出现异常。...苹果于 iOS11 版本开始支持该图片格式,而 Android 则是在  Android O MR1 版本开始支持 HEIF 静态图的软解码,在 P 版本上完全支持该格式的软编解码。

    3.6K120

    Android 后台运行白名单,优雅实现保活

    保活现状 我们知道,Android 系统会存在杀后台进程的情况,并且随着系统版本的更新,杀进程的力度还有越来越大的趋势。...一方面流氓软件用各种流氓手段进行保活,另一方面系统加大杀后台的力度,导致我们一些真正需要在后台运行的应用被误杀,苦不堪言。 优雅保活?...对于那些确实需要在后台运行的应用,我们如何做到优雅的保活呢? 后台运行白名单 从 Android 6.0 开始,系统为了省电增加了休眠模式,系统待机一段时间后,会杀死后台正在运行的进程。...不同的厂商在不同的地方进行设置,一般是在各自的「手机管家」,但更难的是,就算同一个厂商的系统,不同的版本也可能是在不同地方设置。..."); } catch (Exception e) { showActivity("com.samsung.android.sm"); } } 操作步骤:自动运行应用程序

    9.2K41
    领券