1. 程式人生 > >android程序保活兩年實戰經驗(已經上線使用)

android程序保活兩年實戰經驗(已經上線使用)

程序保活參考:

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>

以上就是我這兩年實踐的結果

使用連結中的東西也就才半年不過效果還可以,之前使用的也差不多但是效果不是很好。

希望對你有幫助