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

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

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

3.8K21

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...权限 ; 清单文件中配置该权限 :

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

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

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

13910

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 以上版本拉活效果非常好。

3K70

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

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

1.5K20

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

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

2.5K30

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

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

1.9K10

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

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

1.5K10

现代 WorkManager API 已发布

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

1.2K20

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

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

8.1K30

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

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

3.7K11

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

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

1.6K20

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

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

1.1K30

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.4K30

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框架代码审计过程记录,在审计中意识到某些漏洞单纯通过白盒方式难以发现

20310

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、如何提高服务优先级 设置为前台广播,也是最有效,之前灰色保活方案使用过 设置优先级

70121

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

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

3.7K11

Android通知栏前台服务实现

一、前台服务简单介绍 前台服务是那些认为用户知道且系统内存不足时候不允许系统杀死服务。...前台服务必须给状态栏提供一个通知,它被放到正在运行(Ongoing)标题之下——这就意味着通知只有在这个服务终止或从前台主动移除通知后才能解除。...最常见表现形式就是音乐播放服务,应用程序后台运行时,用户可以通过通知栏,知道当前播放内容,并进行暂停、继续、切歌等相关操作。...,相关使用已上传至Github开发记录,欢迎点击查阅及Star,我也会继续补充其它有用知识及例子项目上。...到此这篇关于Android通知栏前台服务实现文章就介绍到这了,更多相关Android 通知栏前台内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

4.8K31

Android面试

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

92640

Android Service用法知识点讲解

Android Service.png service基础 概述: Android中Service是一个在后台执行长时间运行操作,而不需要和用户交互应用程序组件。...本地服务运行在主线程中,主线程停止,服务则停止,远程服务,不受activity影响;前台服务,用户可见,后台服务,用户不可见,前台终止,用户知道,后台用户则无法知道;可通信后台服务,两种启动模式,...随着调用者退出而销毁服务,不可通信,即使调用者退出,service也。...Service工作过程 生命周期 这两种服务各有各特色。...Service用法知识点讲解 下面我将继续对Java、 Android其他知识 深入讲解 ,有兴趣可以继续关注 小礼物走一走 or 点赞

67430
领券