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

android service原理及免杀(3)

如何免死 3.1 onStartCommand方法中,返回START_STICKY 在StartCommand()几个常量: START_STICKY 系统重新创建服务并且调用onStartCommand...3.2提升Service优先级 前台服务是被认为用于已知的正在运行的服务,当系统需要释放内存时不会优先杀掉该进程。前台进程必须发一个notification在状态栏中显示,知道进程被杀死。...因为前台服务一直消耗一部分资源,但不像一般服务那样会在需要的时候被杀掉,所以为了节约资源,保护电池寿命,一定要在建前台服务的时候发送notification,提示用户。...,参数123456就是这个通知的唯一的id,只要不为0即可。...但是有些情况下,发送的广播在消息队列中排的靠后,就有可能服务还没有接收到广播就销毁了(只是猜想)。所以为了能让这个机制完美运行,可以开启两个服务,相互监听,相互启动。

78020

【Android 进程保活】应用进程拉活 ( 系统 Service 机制拉活 | Service 组件 onStartCommand 方法分析 | 源码资源 )

的 API Level 版本号是否小于 5 , 现在肯定没有版本号小于 5 的手机 , 该值默认是 false ; public abstract...服务进程被杀掉 , 系统会保留 Service 状态 , 但是不保留启动服务的 Intent ; 之后系统会尝试重新创建该 Service 服务 ; ( 更详细的信息查看下方的源码注释 ) /...-- 用于提权的前台进程 --> <service android:name=".foreground_service.ForegroundService"...-- 用于提权的前台进程, 关闭通知操作 --> <service android:name=".foreground_service.CancelNotificationService...通过前台 Service 提升应用权限 // 启动普通 Service , 但是在该 Service 的 onCreate 方法中执行了 startForeground

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

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

    答案肯定是不能的,虽然Service定位是在后台执行长时间的操作,但是Service默认也是在主线程执行的,前面ANR讲过,前台服务执行超过20s就会ANR,平时你也许直接Service里面干过不算太久的耗时操作...START_STICKY_COMPATIBILITY=0: START_STICKY 的兼容版本,但不保证服务被 kill 后一定能重启。...7、onRebind()什么时候被调用 首先前提是onUnbind()方法返回true,此前该服务的所有的绑定已经unBind(), 然后在新的客户端已连接到该服务时就会调用。 8、前台服务是什么?...如何启动 前台服务是用户可感知的,前台服务与Notification共存亡,启动前台服务通过startForeground(int id, Notification notification)传入一个通知...,并且服务停止前,此通知无法移除。

    74321

    2018年Android保活方案效果统计

    可以更换思路,做APP启动后的保活(监听广播启动保活的前台服务) 2、定时器、JobScheduler:假如应用被系统杀死,那么定时器则失效,此方案失效。...:常驻通知栏(可通过启动另外一个服务关闭Notification,不对oom_adj值有影响)、使用”1像素“的Activity覆盖在getWindow()的view上、循环播放无声音频(黑科技,7.0...结论:此方案没有起作用 结论:除了华为此方案无效以及未更改底层的厂商不起作用外(START_STICKY字段就可以保持Service不被杀)。...结论:此方案没有起作用 结论:此方案无效果 3、故意在后台播放无声的音乐(基于onStartCommand() return START_STICKY) 1、原生5.0、5.1:锁屏后3s服务被干掉然后重启...23分钟 结论:高版本情况下可以使用弹出通知栏、双进程、无声音乐提高后台服务的保活概率 实现具体过程 一、双进程实现方案 使用AIDL绑定方式新建2个Service优先级(防止服务同时被系统杀死)不一样的守护进程互相拉起对方

    2.3K50

    Android实现进程保活方案解析

    如果是负数,表示该进程为系统进程,肯定不会被杀掉, 如果是0,表示是前台进程,即当前用户正在操作的进程,除非万不得已,也不会被杀掉; 如果是1,表示是可见进程,通常表示有一个前台服务,会在通知栏有一个划不掉的通知...白色保活 用startForeground()启动前台服务,这是官方提供的后台保活方式,不足的就是通知栏会常驻一条通知,像360的状态栏。...3、实现过程: 1)、用startForeground()启动前台服务 前台Service,使用startForeground这个Service尽量要轻,不要占用过多的系统资源,否则系统在资源紧张时,照样会将其杀死...,此时会出现两个前台服务,但通知管理器里只有一个关联的通知。...这时我们在其中一个服务中调用 stopForeground(true),这个服务前台状态会被取消,同时状态栏通知也被移除。另外一个服务并没有受到影响,还是前台服务状态,但是此时,状态栏通知已经没了!

    9.3K30

    Android开发笔记(四十一)Service的生命周期

    与生命周期有关的方法 onCreate : 创建服务 onStart : 开始服务,Android2.0以下版本使用 onStartCommand : 开始服务,Android2.0及以上版本使用...该函数返回值为整型,一般取值START_STICKY,具体说明如下: 1、START_STICKY:粘性的服务。如果服务进程被杀掉,保留服务的状态为开始状态,但不保留传送的Intent对象。...日志如下: 01-07 10:48:03.109: D/FirstService(5486): onRebind 日志观察结果 从上面日志可以看出 1、在启动服务时,Android2.0及以上版本只调用...startForeground便是这样一个方法,它在通知栏挂上服务的一条信息,从而让服务在前台运行,就不会被系统杀掉。...notify); return START_STICKY; } 异步服务IntentService Service虽然是后台服务,却跟Activity一样在主线程中,如果Service

    48240

    【Android从零单排系列三十七】《Android四大组件——Service》

    下面是关于Android Service的概要: 服务的类型: 前台服务(Foreground Service):可显示通知,被认为是用户正在主动使用的部分,如音乐播放器。...绑定服务可以提供API给其他组件调用,通过IBinder进行通信。 注意事项: 长时间运行的服务应考虑使用前台服务,提供可见的通知,避免被系统杀死。...同时需要提供一个通知作为前台服务的标识,确保服务不容易被系统杀死。 IntentService: 如果需要执行异步任务,可以使用IntentService类。...notification(通知):前台服务需要提供一个通知作为标识,通过设置notification属性来定义通知的内容和样式。...startForeground():将服务设置为前台服务,并传入一个通知作为标识。 stopForeground():将前台服务转为后台服务。

    28710

    Android入门教程 | 四大组件之Service(前台服务,后台服务)

    例如,服务可在后台处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序进行交互。 前台服务 台服务执行一些用户能注意到的操作。例如,音频应用会使用前台服务来播放音频曲目。前台服务必须显示通知。...即使用户停止与应用的交互,前台服务仍会继续运行。 启动前台服务 前台服务可以给用户提供界面上的操作。 每个前台服务都必须要在通知栏显示一个通知(notification)。...用户可以感知到app的前台服务正在运行。 这个通知(notification)默认是不能移除的。服务停止后,通知会被系统移除。...停止前台服务 在Service中调用stopForeground(boolean)方法,能停止前台,但是不退出整个服务。 这个boolean表示是否取消掉前台服务的通知。false表示保留通知。...例如在Service中调用 stopForeground(false) 服务变成了后台服务,并没有退出。此时对应的通知可以滑动取消掉。

    5.6K30

    全面盘点当前Android后台保活方案的真实运行效果(截止2019年前)1、引言2、先总结一下,Android端APP为何要搞保活黑科技?3、相关文章4、常见的Android端保活黑科技方案盘点5、汇

    1、引言 对于IM应用和消息推送服务的开发者来说,在Android机型上的后台保活是个相当头疼的问题。 老板一句:“为什么微信、QQ能收到消息,而你写的APP却不行?”...题外话:实际上,对于后台消息推送能力,Android原版系统早就内置了系统级推送服务(跟iOS上的APNs服务是一个东西),它就是GCM服务(现在升级为FCM了),但众所周之的原因,谷哥的服务在国内都是用不了的...:比如今日头条系、阿里系); 2)降低oom_adj的值:常驻通知栏(可通过启动另外一个服务关闭Notification,不对oom_adj值有影响)、使用”1像素“的Activity覆盖在getWindow...【5】混合使用的效果,并且在通知栏弹出通知: 1)原生5.0、5.1:任务管理器中干掉APP,服务会在周期时间后重新启动。...▲ 结论:高版本情况下可以使用弹出通知栏、双进程、无声音乐提高后台服务的保活概率。

    1.8K20

    全面盘点当前Android后台保活方案的真实运行效果(截止2019年前)

    题外话:实际上,对于后台消息推送能力,Android原版系统早就内置了系统级推送服务(跟iOS上的APNs服务是一个东西),它就是GCM服务(现在升级为FCM了),但众所周之的原因,谷哥的服务在国内都是用不了的...:比如今日头条系、阿里系); 2)降低oom_adj的值:常驻通知栏(可通过启动另外一个服务关闭Notification,不对oom_adj值有影响)、使用”1像素“的Activity覆盖在getWindow...不清理情况下,不加守护进程方案与加守护进程方案Service会一直存活,12分钟左右closed。结论:此方案没有起作用。...【5】混合使用的效果,并且在通知栏弹出通知: 1)原生5.0、5.1:任务管理器中干掉APP,服务会在周期时间后重新启动。...▲ 结论:高版本情况下可以使用弹出通知栏、双进程、无声音乐提高后台服务的保活概率。

    4.4K20

    Android 进阶4:Service 的一些细节

    则选择 Service 或者 IntentService 等服务 注意:默认情况下,服务在其调用组件所在进程的主线程中运行,它既不创建自己的线程,也不在单独的进程中运行。...: 服务终止时不会重建,比较安全 START_STICKY : 服务终止时重建并调用 onStartCommand() ,但传递的 intent 为空,适用于不需要参数的服务 START_REDELIVER_INTENT...前台服务 在 1.管家的抉择 (Android进程生命周期)里我们已经知道: 仅当内存过低且必须回收系统资源以供具有用户焦点的 Activity 使用时,Android 系统才会强制停止服务。...为了降低 Service 被回收的可能,有时候我们需要把服务声明为前台的,这样在内存不足时,系统也不会考虑将其终止,因为在系统看来它正在与用户进行交互。...,默默无闻地后台奉献,没有界面,提示也是比较轻量级的。

    1.2K80

    Android 进程保活招式大全

    通常在任意给定时间前台进程都为数不多。只有在内存不足以支持它们同时继续运行这一万不得已的情况下,系统才会终止它们。 A. 拥有用户正在交互的 Activity(已调用 onResume()) B....拥有正执行其 onReceive() 方法的 BroadcastReceiver 1.2. 可见进程 —— Visible process 没有任何前台组件、但仍会影响用户在屏幕上所见内容的进程。...服务进程 —— Service process 尽管服务进程与用户所见内容没有直接关联,但是它们通常在执行一些用户关心的操作(例如,在后台播放音乐或从网络下载数据)。...后台进程 —— Background process 后台进程对用户体验没有直接影响,系统可能随时终止它们,以回收内存供前台进程、可见进程或服务进程使用。...方案实现挑战 从 Android2.3 开始调用 setForeground 将后台 Service 设置为前台 Service 时,必须在系统的通知栏发送一条通知,也就是前台 Service 与一条可见的通知时绑定在一起的

    3.2K70

    Android面试题(四大组件篇)

    这意味着,在某些情况下,只要onReceive()方法完成,手机就会休眠。如果您的警报接收器调用Context.startService(),那么在启动所请求的服务之前,手机可能会休眠。...为了防止这种情况发生,您的BroadcastReceiver和Service将需要实现一个单独的唤醒锁定策略,以确保在服务可用之前继续运行电话。 Q:前台服务是什么?和普通服务的不同?...如何去开启一个前台服务? 前台服务即对用户可见的服务,可以以通知的形式创建前台服务 Q:是否了解ActivityManagerService,谈谈它发挥什么作用?...onStartCommand方法中,返回START_STICKY 在StartCommand()几个常量: START_STICKY 系统重新创建服务并且调用onStartCommand()方法,但并不会传递最后一次传递的...当然,从理论上来讲这个方案是可行的,实验一下结果也是可行的。但是有些情况下,发送的广播在消息队列中排的靠后,就有可能服务还没有接收到广播就销毁了(只是猜想)。

    91420

    Android开发笔记(五十二)通知推送Notification

    若为true,点击该通知后,通知会自动消失;若为false,点击该通知后,通知不会消失。...在以上参数都设置完毕后,调用该方法会返回Notification对象 NotificationManager Notification只是生成通知的内容,实际推送动作还需要借助于系统的通知服务来实现...NotificationManager便是系统通知服务的管理类,它的常用方法如下: notify : 推送指定通知到状态栏和下拉列表 cancel : 取消指定通知。...方法推送,从而使得后台服务保持在前台运行,详细说明见《Android开发笔记(四十一)Service的生命周期》。...3、采用RemoteViews方式让后台服务保持在前台运行,并可由后台服务的运行进度来实时更新通知内容; 下面是采用RemoteViews方式的通知推送效果图: ?

    2.5K20

    行情艰难,Android初中级面试题助你逆风翻盘,每题都有详细答案

    参考解答:在正常情况下,Activity的常用生命周期就只有如下7个 onCreate():表示Activity正在被创建,常用来初始化工作,比如调用setContentView加载界面布局资源,初始化...,在实际使用中没有其他明显区别; 2、Activity A 启动另一个Activity B 会调用哪些方法?...在保证有权限访问的情况下,通过隐式Intent进行目标Activity的IntentFilter匹配,原则是: 一个intent只有同时匹配某个Activity的intent-filter中的action...1.onStartCommand方式中,返回START_STICKY或则START_REDELIVER_INTENT START_STICKY:如果返回START_STICKY,表示Service运行的进程被...; 4.提升Service进程的优先级:进程优先级由高到低:前台进程 一 可视进程 一 服务进程 一 后台进程 一 空进程。

    80120

    从Service到WorkManager

    所以Google为了保护用户隐私,在Android8.0开始,限制了后台Service。 后台和前台Service 这就涉及到Service的分类了。...如果从是否无感知来分类,Service可以分为前台和后台。前台Service会通过通知的方式让用户感知到,后台有这么一个玩意在运行。...比如音乐类APP,在后台播放音乐的同时,可以发现始终有一个通知显示在前台,让用户知道,后台有一个这么音乐相关的服务。...在Android8.0,Google要求如果程序在后台,那么就不能创建后台服务,已经开启的后台服务会在一定时间后被停止。 所以,建议使用前台Service,它拥有更高的优先级,不易被销毁。...中启动的服务,然后会遍历没有完成的任务,通过Binder找到对应的JobService,执行onStartJob方法,完成任务。

    1.5K30

    精选Android中高级高频面试题:四大组件及Fragment原理

    ; 除了这种区别,在实际使用中没有其他明显区别; 2、Activity A 启动另一个Activity B 会调用哪些方法?...参考回答: 在保证有权限访问的情况下,通过隐式Intent进行目标Activity的IntentFilter匹配,原则是: 一个intent只有同时匹配某个Activity的intent-filter中的...(重点) 参考回答: 先还是得当前系统中有没有拥有这个 Application 的进程。如果没有,则需要处理 APP 的启动过 程。...; 提升Service进程的优先级 进程优先级由高到低:前台进程 一 可视进程 一 服务进程 一 后台进程 一 空进程 可以使用startForeground将service放到前台状态,这样低内存时,...ContentObserver:观察ContentProvider中的数据变化,并将变化通知给外界。

    2K00

    Android后台保活实践总结:即时通讯应用无法根治的“顽疾”

    其它三台机子(9100没测):默认参数的情况下就会重启服务,return START_STICKY 会重启,return START_NOT_STICKY 不会重启。...2)在service 的onDestory里面重启服务: 这个在所有能触发onDestory的情况下都是有效的。4台测试机都测试过。直接startService 或者发送广播重启都可以 。...[1] 前台service: 创建一个通知使自己成为前台service 测试结果: 360一键清理和手机优化,不会把该service结束掉。...2)双服务我觉得没有native守护进程来的好,虽然360,微信什么的都有几个进程服务,但如果不添加到后台保活的话,效果一样不能保活,也会进入停止状态。...互拉的方式有很多种: 1)可以通过监听系统广播来把自己拉起来 2)可以多个app相互拉 3)可以把自己的服务搞成前台服务 4)在service的onstart方法里返回 STATR_STICK 5)添加

    2.3K30

    Android四大组件完全解析(二)---Service

    也就是说Android2.0以前service的运行模式是START_STICKY_COMPATIBILITY,Android2.0以后service的运行模式为START_STICKY。...START_STICKY(1):如果service在开启后(调用了onStartCommand方法)被杀死,则会保留service的开启状态,但不会保存开启service的intent意图。...ProcessLifecycle Android系统会尽量将服务维持很长时间。什么样的服务会让系统这么做呢?开启的服务或者是与客户端绑定的服务 但是在系统在低内存的情况下时,不得不去杀死一些服务。...来防止在低内存的情况下把service给杀死。 Sample 看一下官网给的例子 第一种情况:本地调用service servcie最常见的用法就是作为应用程序的第二大组件。...有了进程内调用的详细demo做参考,接下来会出一个简化的跨进程调用的demo 为了营造跨进程的条件,可以选择在同一台设备运行两个应用程序,或者是在一个应用程序中的清单配置文件中声明service的Android

    1.3K81
    领券