android进程保活两年实战经验(已经上线使用)

版权声明:转载请@我原创地址 https://blog.csdn.net/weixin_39706415/article/details/83686227

进程保活参考:

https://www.jianshu.com/p/53c4d8303e19

https://github.com/08carmelo/android-keeplive

以上地址这个我是通过鸿洋的公众号看到的,我们公司做的是VPN拨号必须要求app保持后台运行,上面链接中介绍的很详细,我的部分保活就用的上面说的,毕竟是鸿洋大神推荐出来的,我用的github中使用的代码效果还是相对可以的

使用后其实还是有很多手机会掉线的

尤其华为、oppo、魅族(其他手机相对还是可以)

因为我们直接可以和学生打交道所以我们组织了一部分这种机型的学生手机测试发现是部分权限没有开启产生的问题

我们的客户端要求在后台保持一个连接让学生能够正常上网使用,若系统强制杀死会导致无法上网(问题很严重的)

我们要求学生开启手机以下权限

1、加入系统白名单

2、开启锁屏不清理(这个还要在app里面使用广播监听锁屏留一个像素进程保护才可以)

3、耗电不清理‘

4、允许后台运行

5、后台运行无限制

权限归权限我们还要在客户端中做适配就是上面链接中讲解的,demo中实现的毕竟除了这些特殊机型大部分都是可以的

还有一点重要的是app的内存 内存一定要优化到最低

这块就是我使用几个类你可以从这里下载下来看https://github.com/08carmelo/android-keeplive

除了使用上面说到的,我在项目中还用了一个就是叫

JobScheduler(https://www.jianshu.com/p/1d4ebae39263)


import android.annotation.TargetApi;
import android.app.job.JobInfo;
import android.app.job.JobParameters;
import android.app.job.JobScheduler;
import android.app.job.JobService;
import android.content.ComponentName;
import android.content.Context;
import android.os.Build;




@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public class TabService extends JobService {



    @Override
    public void onCreate() {
        super.onCreate();

        startJobSheduler();

    }

    @Override
    public boolean onStartJob(JobParameters jobParameters) {
//        logger.error("onStartJob");
        return false;
    }

    @Override
    public boolean onStopJob(JobParameters jobParameters) {
//        logger.error("onStopJob");
        return false;
    }

    public void startJobSheduler() {
        try {
            int id = 1;
            JobInfo.Builder builder = new JobInfo.Builder(id,
                    new ComponentName(getPackageName(), TabService.class.getName() )
                   /* new ComponentName(TabService.this.getPackageName(),TabActivity.class.getName())*/
            );
            builder.setPeriodic(500);  //间隔500毫秒调用onStartJob函数, 500只是为了验证
            JobScheduler jobScheduler = (JobScheduler)this.getSystemService(Context.JOB_SCHEDULER_SERVICE);
            assert jobScheduler != null;
            int ret = jobScheduler.schedule(builder.build());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

 客户端返回后台运行的代码

   moveTaskToBack(false);

目前我研究了很多,什么网上说的守护进程,从c写,从这从那写的,我查过的网上所有方案我都测试了(而且还是找学生测试),都需要用户手动操作,如果你们足够牛那让手机厂商给你的app加入系统白名单就好了,安卓厂家多机型多每个都不一样,保持后台耗电耗性能,系统版本越来越高压根就不要求你后台运行,我们这个app比较特殊学生想上网必须手动设置,而且这个我还整理了一封防止掉线的手机权限设置文档

<a href="http://jingyan.baidu.com/article/9faa72319f8093473c28cb85.html">加入手机系统白名单<br>(此要求必须设置如果帮助中没有您手机的设置介绍请自行百度)</a>
            <br>
            <br>
            <a href="https://jingyan.baidu.com/article/d621e8da7c77532864913f55.html">0.华为安卓8.0 mate 10手机上网掉线设置</a>
            <br><a
                href="https://jingyan.baidu.com/article/0f5fb09902e5036d8334ea2d.html">1.Lenovo(联想)乐檬K3手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/e75057f2ebfbc7ebc91a89e8.html">2.Vivo XPlay6手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/5bbb5a1b01946813eaa17955.html">3.华为手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/17bd8e5221d88d85aa2bb855.html">3.OPPO手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/0bc808fc56e3bf1bd485b9a3.html">4.魅族手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/49ad8bce4295415834d8faa2.html">5.ViVO手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/60ccbceb51de3d64cbb19756.html">6.小米手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/e9fb46e16cc1667521f76633.html">6.三星手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/ff42efa9da45f9c19e2202f2.html">7.一加手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/album/20b68a88a1c96e796dec6255.html">8.联想手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/album/fcb5aff7ae1428edaa4a71bc.html">9.魅族手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/76a7e409fd267dfc3b6e1589.html">10.朵唯手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/48b558e324e7bf7f39c09a55.html">11.酷派手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/37bce2be6fc4831002f3a22e.html">12.金立(gionee) M6手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/d8072ac4957828ec95cefd80.html">13.Vivo X5m手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/f71d6037a59b291ab641d126.html">14.联想Lenovo A806手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/fec7a1e5e30b071190b4e7da.html">15.华硕ASUS Z00ADB手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/e73e26c08b305324adb6a705.html">16.OPPO R9S手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/19020a0a15f572529c284255.html">17.Letv(乐视)手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/b7001fe1b7bdd60e7282dd97.html">18.三星C9手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/e9fb46e16cc1667521f76633.html">19.三星Galaxy S4手机上网掉线设置</a>
            <br>
            <a href="https://jingyan.baidu.com/article/c275f6ba3d3d57e33c75674d.html">20.华为P9上网掉线设置</a>

以上就是我这两年实践的结果

使用链接中的东西也就才半年不过效果还可以,之前使用的也差不多但是效果不是很好。

希望对你有帮助

猜你喜欢

转载自blog.csdn.net/weixin_39706415/article/details/83686227