APP保活

2023-11-09

APP保活

前言

app保活,在Android中是一种流氓行为,一方面无端浪费用户手机电量,另一方面给用户一种很困惑的感觉,影响用户体验还有可能导致整个Android系统流畅性变差,所以Google官方一种不推荐该功能,也一直在阻止这方面功能在Android系统上运行,作为一个Android开发人员,应该极力地址这种无耻的行为!!!

保活的方式:

一、白色保活:

  • 给用户明确的提示,我这个应用的进程优先级比较高,不容易被杀死,请你也不要手动杀死!
    |– 开启前台服务进程

二、灰色保活(目前保活的主流做法,比如qq、微信 – 当然他们不止这一种保活手段)

  • 也是利用前台服务进程的方式,来提高进程的优先级,但是不会在通知栏给用户明确的提示
    |– 利用系统的漏洞,开启前台服务进程,不会有通知!

    ① API < 18,启动前台service时直接传入new=”“>

    ② API >= 18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理;
    —–查看开启的服务是否为前台进程 “dumpsys activity services 应用包名”

    public class GrayService extends Service {
    
       private final static int GRAY_SERVICE_ID = 1001;
    
       @Override
       public int onStartCommand(Intent intent, int flags, int startId) {
    
           if (Build.VERSION.SDK_INT < 18) {
               //API < 18
               startForeground(GRAY_SERVICE_ID, new Notification());
           } else {
               Intent innerIntent = new Intent(this, GrayInnerService.class);
               startService(innerIntent);
               startForeground(GRAY_SERVICE_ID, new Notification());
           }
    
           return super.onStartCommand(intent, flags, startId);
       }
    
       ...
       ...
    
       /**
        * 给 API >= 18 的平台上用的灰色保活手段
        */
       public static class GrayInnerService extends Service {
    
           @Override
           public int onStartCommand(Intent intent, int flags, int startId) {
    
               startForeground(GRAY_SERVICE_ID, new Notification());
               stopForeground(true);
               stopSelf();
               return super.onStartCommand(intent, flags, startId);
           }
    
           ...
       }
    }
    

    三、黑色保活(耍流氓)

  • 系统广播保活:比如开机(4.0以上系统已经屏蔽)、拍照(5.0以上系统已经屏蔽)、网络切换等 – Google一直在屏蔽的路上,我们一直在反屏蔽!

  • 多进程互相守护:
    |– 将Service在另一个进程中启动(配置process) 监听应用是否还存活,没有存活就启动 (监听的方式有轮询、socket心跳等)
    |– 利用c语言,fork一个linux进程,监听
    |– sdk唤醒,比如集成了腾讯的sdk,那sdk里面有一段程序,会去检测腾讯自家的应用是否还存活,没有存活就激活

    |-- 更可耻的 多家企业联合,互相激活,比如百度系的激活淘宝 淘宝系的激活百度等等
    

四、白名单(超级流氓)

  • 以上所有的方式,都无法做到绝对的保活,那怎么做到绝对保活呢?
    |– 告诉底层系统不要杀自己,即使被认为的杀死了,底层系统也会帮忙再次启动;告诉三方的卫士软件,不要主动去杀死自己,怎么做到呢?
    |– 白名单 白名单 白名单(只有有实力的大企业能够做到)

最后,再强调一遍,作为一个Android开发人员,应该保护Android开发环境不被一些无耻的行为累赘,所以不要去做应用保活这种可耻的事情!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APP保活 的相关文章

  • 性能测试(并发负载测试)测试分析

    声明 此文章是从网络上转载下来的 至于真实出处无法找到 在对系统进行测试的时候 通常有一个难点那就是使用LR JMeter等进行了性能测试 但是很难进行测试后的分析 以下很大一部分是从网上转载下的一位前辈对性能测试后的分析的见解 分析原则
  • 一些诗集-自创+整理

    常学问 传统文化常学问 研究中易琢磨神 时时出来抬头看 兼容并包实践真

随机推荐

  • win10和linux双系统免u盘,WIN10下免U盘安装Ubuntu双系统

    目录 一 工具下载 二 安装前的准备工作 三 安装Ubuntu系统 四 注意 最后 附下本文参考的博客 一 工具下载 1 下载Ubuntu操作系统 Ubuntu操作协同最好是去Ubuntu官方网站下载 https ubuntu com do
  • 你知道es是如何计算相似度得分的吗?

    1 es中相似度计算公式 BM25 6 x版本和7 x 版本的es的默认得分计算方式都是BM25 假如用户给定一个输入 Q Q Q 其包含了关键字 q 1
  • Latex插入表格及表格设置

    前言 下面将介绍简单的表格插入与格式设置 更多请参考texdoc中宏包说明 1 导言区 代码如下 示例 documentclass article usepackage ctex 更多表格设置见 texdoc booktab 三线表 tex
  • Unity3D FPS Game:第一人称射击游戏(三)

    耗时一周制作的第一人称射击游戏 希望能帮助到大家 由于代码较多 分为三篇展示 感兴趣的朋友们可以点击查看 Unity3D FPS Game 第一人称射击游戏 一 Unity3D FPS Game 第一人称射击游戏 二 Unity3D FPS
  • linux系统中防火墙脚本,防火墙设置脚本

    防火墙设置脚本 gt success 在web服务器中 只需要开启 web服务 和ssh服务还有 ping 其它的一率禁止 脚本如下 gt warning 在配置防火墙的时 一定要注意 不要把自己关在外面 最简单的方式 是使用脚来处理 bi
  • strtok_s的用法基本解释(2021-07-12)

    strtok s的用法基本解释 char string A string tof tokens nand some more tokens char seps t n char token NULL printf Tokens n char
  • 以太坊Ethereum命令

    etheum命令 查询账户 eth accounts 创建账户 personal newAccount password 查看账户余额 eth getBalance eth accounts 0 或指定具体的账户 eth getBalanc
  • SSO、OAuth2、JWT、CAS、OpenID、LDAP、淘宝微信登录一网打尽

    目录 前言 一 SSO简介 二 OAuth2简介 三 OAuth 2 0 规定了四种获得令牌的流程 1 授权码 Authorization Code 2 隐藏式 Implicit 3 密码式 Resource Owner Password
  • Cache的基本原理以及简单操作

    对于没有接触过底层技术的朋友来说 或许从未听说过cache 毕竟cache的存在对程序员来说是透明的 在接触cache之前 先为你准备段code分析 int arr 10 128 for i 0 i lt 10 i for j 0 j lt
  • 【JavaScript】关于this的代码输出题总结

    1 在Javascript中 this指向函数执行时的当前对象 2 箭头函数时不绑定this的 它的this来自原其父级所处的上下文 3 如果call第一个参数传入的对象调用者是null或者undefined call方法将把全局对象 浏览
  • docker容器里输入python: command not find

    在docker 容器里已经安装好了python包等文件 但是在命令行输入python时出现的是command not find 这是因为没有将包里的python与用户认识的python 建立起来联系 只需要建立软连接即可 ln s opt
  • 使用QNetworkRequest,实现网络连接

    首先要在头文件中包含以下文件 include
  • java解析未知key json_Gson解析JSON中动态未知字段key的方法

    前面一篇文章我介绍了Gson的解析的基本方法 但我们在享受Gson解析的高度封装带来的便利时 有时可能会遇到一些特殊情况 比如json数据中的字段key是动态可变的时候 由于Gson是使用静态注解的方式来设置实体对象的 因此我们很难直接对返
  • 微信小程序开发日记(二)

    一 VSCode开发微信小程序配置 安装插件 minapp 安装插件wechat snippet 安装wxml插件 如何调试 调试遇到两个问题 第一 如何热更新 第二 如何看console 第三 新建页面 新建组件等操作还是微信IDE好一些
  • fetch用英语解释_fetch什么意思_fetch是什么意思中文翻译

    fetch表达的意思有很多种 那么你知道fetch做动词和名词分别都有哪些意思吗 下面学习啦小编为大家带来fetch的英语意思和例句 欢迎大家学习 fetch作动词的意思 取来 抵达 到达 卖得 fetch作名词的意思 拿取 拿来 诡计 风
  • 干预分析模型- China GDP

    干预分析模型 GDP预测 加载pandas matplotlib等包 处理时间序列 import pandas as pd import numpy as np import matplotlib pylab as plt matplotl
  • 谷歌浏览器Chrome和浏览器驱动webdriver的版本对应

    谷歌浏览器Chrome和浏览器驱动webdriver的版本对应 在搞懂这个之前 先来说明几个词 Chrome 浏览器 Selenium 是一个用于浏览器自动化测试的工具集 是一个完整的自动化测试框架 WebDriver 是Selenium的
  • 尚硅谷大数据技术之Flume

    第1章 概述 1 1 Flume定义 Flume是Cloudera提供的一个高可用的 高可靠的 分布式的海量日志采集 聚合和传输的系统 Flume基于流式架构 灵活简单 flume能保证数据的可靠性 但不能保证数据的重复性 1 2 Flum
  • Rides:基本操作与原理

    目录 redis是什么 谁在使用redis 使用redis客户端 redis数据结构 strings lists 集合set 有序集合 哈希 redis持久化 RDB AOF AOF重写 如何选择RDB和AOF 主从 用法 redis是什么
  • APP保活

    APP保活 前言 app保活 在Android中是一种流氓行为 一方面无端浪费用户手机电量 另一方面给用户一种很困惑的感觉 影响用户体验还有可能导致整个Android系统流畅性变差 所以Google官方一种不推荐该功能 也一直在阻止这方面功