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

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

说起来比较绕口,总之本文要讨论的内容是如何防止Android应用被系统“杀掉”,下篇讨论的是“被杀掉”后如何让它复活。...当"咕咚"处于停止状态,其进程被杀死,通知栏图标被清理,等待几分钟没有 自动重启,当重新进入“咕咚”时,会从欢迎界面重新进入; b....(滑动清理除外),说明已经启动保活机制:   - ①"咕咚"禁止了返回键,以保证运动Activity不被销毁;   - ②不断更新通知栏计时,以保证APP始终在前台,防止被系统回收;   - ③"...咕咚"被清理后能够自动重启,通知被删除后自动弹出,说明可能有另外一个东西(进程或Service)监听器运动Service(或进程)存活状态,当Service被销毁时,立马将其拉起来;   - ④“咕咚...分析: 当"乐动力"处于停止状态时,黑屏状态下,其在短时间内被系统杀死,说明保活机制没有启用; 但当处于运动暂停或进行状态时,"乐动力"在一段时间内没有被杀死,且当锁屏时,"乐动力"会自动将运动界面切换到前台

4.2K21

被后台杀死后,Android应用如何重新走闪屏逻辑

后台杀死与恢复的堆栈.jpg APP被后台杀死后,APP端进程被销毁了,也就不存在什么Activity了,也就没有什么Activity堆栈,不过AMS的却是被保留了下来: ?...后台杀死与恢复的堆栈-杀后.jpg 当用户再次启动APP时候会怎么样呢?这个时候,首先看到其实C,而不是栈底部的A,也就是说往往被杀死后,恢复看到的第一个界面是用户最后见到的那个界面。 ?...从推送唤起被杀APP时,如何走闪屏逻辑 对于推送消息的处理,其路由器一般放在MainActivity,并且在onCreate跟onNewIntent都有添加,如果APP存活的情况,可以直接跳转目标页面,...如果APP被杀,这个时候,希望先跳转主界面,再跳转目标页面,在效果上来看就是,用户先看到目标页面,点击返回的时候再看到主界面,如果加上闪屏,希望达到的效果是先看到闪屏、点击返回看到目标页,再点击返回看到主页面...的路由系统中,针对这两种场景要,先跳转闪屏,闪屏回来后,再跳转推送页 如何判断呢,后面两种场景其实只需要判断是否有Activity存活即可,也就是查查APP的topActivity是否为null,注意不要去向

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

    Android 功耗(12)---省电续航-相互唤醒

    03用户通知栏更是变成各种商业的博弈,个别后台推送消息还调用提示音进行广告提示,巴不得用户24小时使用。其实任何的图形和声音调用都是需要费电的。...相互唤醒的启动方式 方式一: 系统广播(开机、解锁)->启动推送服务pushService,即第三方APP永远不被杀死的SDK技术->将所有注册相同推送服务的家族系APP执行后 台启动; 方式二: 通过...,即第三方APP永远不被杀死的SDK技术->将所有注册相同推送服务的家族系APP执行后台启动; 方式四: 伪装Activity或前台进程启动app->启动推送服务pushService,即第三方APP永远不被杀死的...; 4.Android设置–> WLAN–>点击菜单键选择高级–>休眠状态下保持WLAN连接的下拉列表{始终、仅限充电时、从不(会增加数据流量)},如果设置不为始终,那么我们锁屏休眠后,程序将会处于无网络状态...; 4.Android设置–> WLAN–>点击菜单键选择高级–>休眠状态下保持WLAN连接的下拉列表{始终、仅限充电时、从不(会增加数据流量)},如果设置不为始终,那么我们锁屏休眠后,程序将会处于无网络状态

    1K30

    Android消息推送:第三方消息推送平台详细解析

    (开发成本和后台管理、统计成本) 消息到达率高 如果一个手机里有多个App使用了同一家推送服务,那么这些App将共用一条消息通道,即使你家的App推送服务被杀死了,那么只要用户打开了其他集成该推送服务的...有一天你的App被杀死了,但这时用户启动了今日头条,那么推送系统也就会通过共享的推送通道顺便把你推送消息送达到手机上,然后还可能把你的进程也唤醒(被“保活”了)。...如果用户群体精准(使用小米手机或华为手机居多),可以考虑只集成对应手机厂商的推送; 注意:单一的手机厂商也能工作,比如小米推送在非小米手机上当然也能工作,只不过不是系统级别的服务了,容易被杀死。...通知栏消息:该类消息在被送达用户的设备后,直接以系统通知栏的形式展示给用户 不会继续被传递到App 透传消息:该类消息在被送达用户的设备后,还会继续传递到App 通过回调App的某个BroadcastReceiver...因为透传消息在整个消息传递过程中比通知栏消息多了一步-传递到App,因此透传消息就增加一些被系统限制的概率,给系统杀死的概率就高一些,所以说,通知栏消息比透传消息应该能提供更好的送达率。

    9.8K60

    iOS 本地推送概念步骤:属性:点击通知跳到指定控制器界面快捷回复功能(iOS 8以后可用), category 属性的使用方法

    (说明新内容的数量) 播放音效(提醒作用) 2.用户也可以决定是否要开启以下4个功能: 显示App图标数字 播放音效 锁屏显示 显示在“通知中心” 3、注意: 发送推送通知时,如果程序正在前台执行,那么推送通知就不会被呈现出来...,但是微信在前台的时候也能推送消息,方法是:创建一个view,仿造系统消息通知的样式向下出现,点击后回到根控制器再进行跳转(注意压栈) 点击通知会打开该通知的app 不管程序打开还是关闭,推送都能如期发出..., nonatomic,copy) NSString *alertTitle NS_AVAILABLE_IOS(8_2); 12、设置通知推送携带的参数,一般用于点击通知打开指定控制器页面 @property...(nullable, nonatomic,copy) NSDictionary *userInfo; 例子: 发送通知时,带一个索引2的参数,点击通知打开程序后自动跳到第三个控制器(TabBarController...案例结构,tabBarController的索引分别为0 1 2 1、接收到本地通知后调用(AppDelegate中),该方法只有程序前台或后台的时候才有用,退出无法接收到消息即无法跳转,如需要在程序退出时推送通知

    2.6K60

    iOS开发--本地通知与远程通知

    Paste_Image.png 通知的注意点 1、App在前台运行的时候,通知不会展示出来 2、点击通知,默认会自动打开推送通知的App 3、不管App是否打开,通知都可以如期发出 1、本地推送通知...@property(nonatomic,copy) NSString *alertAction; // 设置点击通知的启动图片(一般设置App启动图片后,这里可以随便写) @property...,如果用户打开通知,可以让用户进入一些特定的界面 /* 应用程序在进入前台,或者在前台的时候都会执行该方法 */ - (void)application:(UIApplication *)application...deviceToken给公司的服务器 4、监听用户对通知的点击 如何调试远程推送功能 1、真机 2、调试推送需要的证书文件 证书自己配置。。。...3、发布具有推送服务的App 包含推送的cer证书+某个具有发布资格的电脑,就可以发布 如何推送 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions

    3.3K20

    IMSDK华为离线推送快速集成

    一、简介 即时通信 IM 的终端用户需要随时都能够得知最新的消息,而由于移动端设备的性能与电量有限,当 App 处于后台时,为了避免维持长连接而导致的过多资源消耗,即时通信 IM 推荐您使用各厂商提供的系统级推送通道来进行消息通知...本篇主要介绍:在tuikit上如何快速跑通华为离线推送,实现如下功能点,顺便记录一下,在集成过程中,容易踩到的坑点 1、退后台/杀进程,接收离线消息 2、离线消息透传ext字段 3、通知栏点击,打开应用内界面...//APP 检测到应用退后台时可以调用此接口,可以用作桌面应用角标的初始化未读数量。 //从5.0.1版本开始,如果配置了离线推送,会收到厂商的离线推送通道下发的通知栏消息。...步骤2:接收端获取自定义内容 若 添加证书 时设置【点击通知后】的操作为【打开应用】或【打开应用内指定界面】,当点击通知栏的消息时,客户端可以在相应的 Activity 中获取自定义内容,可以参考 OfflineMessageDispatcher.java...6、由于华为推送的兼容性问题,自定义ext字段,只能在部分 EUI10+ 的设备上收到 7、进程被杀,厂商推送离线消息到来,弹出的通知栏行为、通知栏样式、震动、提示音、角标增加,都是系统行为,控制开关在手机系统设置里面

    2K40

    IMSDK华为离线推送快速集成

    一、简介 即时通信 IM 的终端用户需要随时都能够得知最新的消息,而由于移动端设备的性能与电量有限,当 App 处于后台时,为了避免维持长连接而导致的过多资源消耗,即时通信 IM 推荐您使用各厂商提供的系统级推送通道来进行消息通知...本篇主要介绍:在tuikit上如何快速跑通华为离线推送,实现如下功能点,顺便记录一下,在集成过程中,容易踩到的坑点 1、退后台/杀进程,接收离线消息 2、离线消息透传ext字段 3、通知栏点击,打开应用内界面...//APP 检测到应用退后台时可以调用此接口,可以用作桌面应用角标的初始化未读数量。 //从5.0.1版本开始,如果配置了离线推送,会收到厂商的离线推送通道下发的通知栏消息。...步骤2:接收端获取自定义内容 若 添加证书 时设置【点击通知后】的操作为【打开应用】或【打开应用内指定界面】,当点击通知栏的消息时,客户端可以在相应的 Activity 中获取自定义内容,可以参考 OfflineMessageDispatcher.java...6、由于华为推送的兼容性问题,自定义ext字段,只能在部分 EUI10+ 的设备上收到 7、进程被杀,厂商推送离线消息到来,弹出的通知栏行为、弹出顶部横幅行为、通知栏样式、震动、提示音、角标增加,都是系统行为

    4.1K40

    IMSDK离线推送

    ,App 在后台时容易被系统 kill,因此推荐在安卓设备上集成对应的厂商推送,依赖厂商的系统级服务,推送到达率较高。...另外请打开app的通知栏权限、不要设置手机免打扰模式。 iOS app退后台,可以调用deBackground接口通知云通信后台,云通信后台会以离线消息的方式投递消息下来。...②、苹果官网的证书过期、密码错误等原因,未知错误可以先重新申请一个证书再运行看看 3、安卓点击通知栏,可以跳转到指定页面吗 答:暂时还不支持,只能按系统标准打开应用。...6、通知栏刷出了离线消息,点击打开app,进入到会话页面,怎么获取到这个离线消息呢 答、离线状态,新消息不会触发onNewmessage接口,进入会话页面时,通过拉取漫游消息拉取到这条离线消息。...但是一旦IMAPP在后台被kill了,消息就只能通过离线消息的方式,由厂商服务推送到他们的设备系统进程里面,由系统进程弹出通知栏、定义通知栏的点击跳转事件。

    6.1K151

    IMSDK华为离线推送快速调试

    一、简介 即时通信 IM 的终端用户需要随时都能够得知最新的消息,而由于移动端设备的性能与电量有限,当 App 处于后台时,为了避免维持长连接而导致的过多资源消耗,即时通信 IM 推荐您使用各厂商提供的系统级推送通道来进行消息通知...本篇主要介绍:在tuikit上如何快速跑通华为离线推送,实现如下功能点,顺便记录一下,在集成过程中,容易踩到的坑点 1、退后台/杀进程,接收离线消息 2、离线消息透传ext字段 3、通知栏点击,打开应用内界面...//APP 检测到应用退后台时可以调用此接口,可以用作桌面应用角标的初始化未读数量。 //从5.0.1版本开始,如果配置了离线推送,会收到厂商的离线推送通道下发的通知栏消息。...步骤2:接收端获取自定义内容 若 添加证书 时设置【点击通知后】的操作为【打开应用】或【打开应用内指定界面】,当点击通知栏的消息时,客户端可以在相应的 Activity 中获取自定义内容,可以参考 OfflineMessageDispatcher.java...7、由于华为推送的兼容性问题,自定义ext字段,只能在部分 EUI10+ 的设备上收到 8、进程被杀,厂商推送离线消息到来,弹出的通知栏行为、弹出顶部横幅行为、通知栏样式、震动、提示音、角标增加,都是系统行为

    2.1K90

    ios入门之消息推送

    本地推送 不需要服务器支持(无需联网)就能发出的推送通知,app本地创建通知,加入到系统的Schedule里,如果触发器条件达成时会推送相应的消息内容,如常见的定时任务闹钟等。 ?...= YES; //设置通过点击通知打开APP的时候的启动图片(无论字符串设置成什么内容,都是显示应用程序的启动图片) localNote.alertLaunchImage = @"111...当用户点击本地推送通知的时候,会自动打开app,这里有2种情况:app在后台运行,或者被系统进程杀死,对于这两种情况,我们怎么处理呢? app后台运行 ?...对于app被杀死的情况,要先启动app,启动完毕会调用AppDelegate方法。 需要特别注意的是:在iOS8.0以后本地通知有了一些变化,如果要使用本地通知,需要得到用户的许可。...launchOptions设置 if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) { // 当被杀死状态收到本地通知时执行的跳转代码

    1.9K60

    Android 点击通知栏消息打开activity,并判断app是否运行

    android的通知栏消息点击事件如果是打开一个activity时,我们要考虑两种情况: 应用正在前台运行。 应用已退出。...对于第二种情况,我参照了很多app的做法,现总结为以下两种: 点击通知栏消息打开activity按下返回键后判断app是否启动,如果没有启动就要启动app; 点击通知栏消息时判断app是否正在前台运行,.../** * 启动App时,为跳转到主页MainActivity的Intent写入打开通知的Intent,如果有通知的情况下 * * @param appStartActivity...时,为跳转到主页MainActivity的Intent写入打开通知的Intent,如果有通知的情况下 * * @param appStartActivity * app...B的Launch mode为singleTask,此时D通过Intent跳转到B,则栈的情况变成了:A B。而C和D被弹出销毁了,也就是说位于B之上的实例都被销毁了。

    3.4K10

    057 组件化的Android

    如果已经创建,就直接通知它加载组件。否则,先将该进程创建起来,再通知它加载组件。 关闭组件: 组件关闭时,其所运行在的进程无需关闭,这样就可以让组件重新打开时得到快速启动。...: (1).首先检查有没有泄漏的Surface,即那些Session已经不存在但是还没有销毁的Surface,以及那些宿主Activity已经不可见但是还没有销毁的Surface。...如果存在的话,就将它们销毁即可,不用KillPids。 (2).如果不存在没有泄漏的Surface,那么那些存在Surface的进程都有可能被杀掉,这是通过KillPids来实现的。...如果后台进程超过限制,那么最近越是不使用的后台进程,就越会被杀掉。 (4). 通知进程ScheduleTrimMemory。 updateOomAdjLocked-- single: (1)....2.Init和System Server进程的oom_adj等于-16,是最高的,保证不会被杀死。 3.PhoneApp具有persist属性,它的oom_adj被设置为-12,也能保证不会被杀死。

    59830

    Android 进程保活招式大全

    方案设计思想 监控手机锁屏解锁事件,在屏幕锁屏时启动1个像素的 Activity,在用户解锁时将 Activity 销毁掉。注意该 Activity 需设计成用户无感知。...方案实现挑战 从 Android2.3 开始调用 setForeground 将后台 Service 设置为前台 Service 时,必须在系统的通知栏发送一条通知,也就是前台 Service 与一条可见的通知时绑定在一起的...方案设计思想 在发生特定系统事件时,系统会发出响应的广播,通过在 AndroidManifest 中“静态”注册对应的广播监听器,即可在发生响应事件时拉活。 常用的用于拉活的广播事件包括: ?...这些方案包括: 利用系统通知管理权限进行拉活 利用辅助功能拉活,将应用加入厂商或管理软件白名单。 这些方案需要结合具体产品特性来搞。 上面所有解释这些方案都是考虑的无 Root 的情况。...国内版应用:根据终端不同,在小米手机(包括 MIUI)接入小米推送、华为手机接入华为推送;其他手机可以考虑接入腾讯信鸽或极光推送与小米推送做 A/B Test。

    3.2K70

    推送-远程通知推送教程

    在Xcode完成一些下载后,看起应该会是下面的样子 1463989064930009.png 这个步骤背后的操作是,如果你当前的开发者帐号下没有对应的App ID就会主动创建App ID,并且打开推送通知功能...你可以登陆开发者中心确认是否打开了这个功能: 1463989123284236.jpg 如果这个过程中出现问题,可以手动创建App ID或者点击开发者中心 + 或 Edit 按钮开启推送通知功能。...处理接收到的通知 在这个章节,你将会学习当App接收到通知后或者用户点击了通知应该如何执行什么样的操作。...编绎运行,完成安装后,发送一些新的动态。点击通知以启动App,启动之后App会显示一些新消息。...,当交互通知被用户触发时打开App并让其进入前台.这个交互动作的标识符是 VIEW_IDENTIFIER ,这个标识符被用于区分同一通知的不同交互动作.

    4K30

    再谈Android客户端进程保活

    搞Android的同学都知道,每一个Android应用启动后至少对应一个进程,有的则有多个进程,大多数主流APP都会包含多个进程,因为除了主要的进程之外,还有诸如长连接、推送等进程。...空进程 某个进程不包含任何活跃的组件时该进程就会被置为空进程,完全没用,杀了它只有好处没坏处,第一个干它。 内存阈值 上面主要讲的是进程,那么进程是怎么被杀的呢?这不得不提主要的一个原因:内存。...缓存进程,空进程,在内存不足的情况下就会优先被kill CACHED_APP_MIN_ADJ 9 缓存进程,也就是空进程 SERVICE_B_ADJ 8 不活跃的进程 PREVIOUS_APP_ADJ...GCM: 只要机器上有GMS ,启动时就尝试注册GCM,并通知后台。服务器会根据终端是否保持长连,决定是否由GCM通知。GCM主要针对国外比较复杂的网络环境。...,单个进程被回收了并不影响其他的进程。

    3.8K71

    搞定iOS推送,看这一篇就够了 顶

    iOS 10及以后版本,处理APNs通知点击事件 // iOS 10: 点击通知进入App时触发,在该方法内统计有效用户点击数 - (void)userNotificationCenter:(UNUserNotificationCenter...因为本人也是第一次搞推送这书,而且也踩了不少的坑,为了下次不再踩同样的坑,所以在这里就对如何制作推送证书进行了一次规整。 ####如何制作推送证书?...进入后,我有点懵逼,因为之前没有了解过个推SDK的逻辑,在询问了个推技术支持后,技术支持告诉我怎么在个推平台上面去推,也是自己太粗心了,人家进去第一句话就写的很清楚,推送通知目前仅支持安卓用户,iOS请使用透传消息...NICE啊,这下应用在前台、应用在后台和应用被杀死的情况下都可以收到推送消息了,爽歪歪啊!看来我们已经成功看了百分之九十了!...]; 发现demo里面有这么一行代码,我把这行代码打开后,推送一条消息,发现标题没有变化,我惊呆了!

    1.8K41

    Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?

    升级到 34 后,我们的 App 所受到的影响。...而在 Manifest 文件中注册的静态广播接收器,则不能进入队列,它们会在 App 从缓存状态中被移除销毁时,进行广播传递。 “什么是缓存状态下的 App?...例如,如果一个应用包名为“com.example.app”,它存储了一个媒体文件,但它的包名被隐藏了,那么在查询媒体库时,所有者包名可能会被替换为“com.android.providers.media...奇怪的是我在 Android14 官方的虚拟机上并没有打开通知成功,更不用说打开全屏通知了。...; 2)设备策略控制器(DPC)和针对企业的支持包; 小结:Android 的通知管理只会越来越严格,早就应该管管了。

    4.6K10

    iOS小技能: 限制账号退出登陆后无法收到推送功能(递归设置和删除别名)

    前言 问题:ios中极光推送退出登陆后还能收到推送的问题 解决方式:以极光推送为例子,退出登陆时删除别名的即可 设置和删除别名采用递归的方式,如果设置失败就继续重试 I 别名设置、查询及删除操作 以极光推送为例子...处于后台/被杀死的状态仍可进行语言播报(iOS12.1以上) iOS NotificationServiceExtension实现VoiceBroadcast【app处于后台/被杀死的状态仍可进行语言播报...2.3 android极光推送设置心跳交互时间 背景: 对于设备经常离线的处理方法,如果这种情况出现的几率大的话,建议更新一下SDK,并且将心跳时间从默认的4m 50s改为更短,例如1m或30s,将改善推送延时情况...一个设备的概念:app集成sdk之后在设备上安装打开之后,sdk会向极光服务器进行注册,生成一个唯一标识码regid(app+设备绑定)。...for more than 255 days"}; 极光控制台推送返回:“错误,没有满足条件的推送目标或推送目标超过255天不活跃,被排除在推送目标之外”

    1.7K30
    领券