当前位置:首页 > 未命名 > 正文内容

Android性能优化——电池使用优化

u3blog7年前 (2017-04-25)未命名509

为什么要做电量优化

Android应用开发中,需要考虑的情况是,如何优化电量使用,让我们的app不会因为电量消耗过高被用户排斥,或者被其他安全应用报告。

什么样的行为会导致电量损耗过高

对于移动设备而言,有以下几种行为会导致设备电量的消耗增加 1.屏幕保持开启状态 2.蜂窝网络的频繁启动与关闭

如何观测我们的应用电量使用情况

可以先使用以下adb命令,生成我们应用的电量使用情况txt
adb kill-servers
adb devices
adb shell dumpsys batterystats --reset
从电脑拔出手机,操作一会我们的目标app,再接上电脑
adb kill-servers
adb devices
adb shell dumpsys batterystats --reset
然后再去https://github.com/google/battery-historian 下载zip文件 找到下载文件中的historian.py,拷贝到常用位置 接下把cmd转到刚刚存放文件的位置来运行
python historian.py battery.txt > battery.html
运行结束后就得到了一个html文件,可以在浏览器打开查看 顶部是电量情况 最左边是各种行为 底部是时间间隔(如下图,点击查看大图)

优化API——PowerManager.WakeLock

PowerManager.WakeLock 可以通过 acquire()方法获得,使设备保持在获取时的状态。 在执行完任务之后,我们需要调用release()方法来释放锁,这样,设备就会在空闲的时候进行休眠来节省电池使用。

优化API——JobScheduler

在满足特定条件后,自动执行任务 用法如下代码
private void downloadSmarter() {
        JobScheduler scheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
        // Beginning with 10 here to distinguish this activity's jobs from the
        // FreeTheWakelockActivity's jobs within the JobScheduler API.
        mServiceComponent = new ComponentName(this, MyJobService.class);
        for (int i=10; i<20; i++) {
            JobInfo jobInfo = new JobInfo.Builder(i, mServiceComponent)
                    .setMinimumLatency(5000) // 5 seconds
                    .setOverrideDeadline(60000) // 60 seconds (for brevity in the sample)
                    .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) // for Wifi only
                    .build();

            mWifiMsg.append("Scheduling job " + i + "!\n");
            scheduler.schedule(jobInfo);
        }
    }
MyJobService 是我们自定义的继承自 JobService 的一个类,我们可以在其内部做一些处理,例如网络请求等等。 当满足特定条件时,这些job就会被调用,例子中使用的条件是,当wifi连接时。 要注意的是,这个api是在21以后才添加的。

扫描二维码推送至手机访问。

版权声明:本文由u3blog发布,如需转载请注明出处。

本文链接:https://u3blog.xyz/?id=655

分享给朋友:

评论列表

11111
11111 IP:
1个月前 (08-07)

识别码:ftwzhm76508GA-这游戏真不错!http://www.dnf70.com/3111.html

111111
111111 IP:
1个月前 (08-07)

识别码:slcxme97168NB-这游戏真不错!http://www.a5km.com/yxgl/jdqs/29025.html

1111111
1111111 IP:江苏省
1个月前 (08-07)

识别码:zflhrv38219LB-这游戏真不错!http://www.a5km.com/yxgl/jdqs/28141.html

11111111
1个月前 (08-07)

识别码:mbqsop34610NB-这游戏真不错!http://www.a5km.com/yxgl/jdqs/27946.html

111111111
1个月前 (08-07)

识别码:irhuex86295PY-这游戏真不错!http://www.dnf70.com/2438.html

1111111111
1个月前 (08-07)

识别码:megwlo76593XU-这游戏真不错!http://www.a5km.com/yxgl/jdqs/28393.html

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。