SP91 GMS唤醒优化

现象 平均电流5mA

【通过标准是 小于等于 4 mA】
平均电流5mA

具体唤醒情况如下

【GMS】设置type 2的定时 3125756
01-02 11:09:29.186104 19796 22496 V AlarmManager: APP set(PendingIntent{9eaa3ee: PendingIntentRecord{20a678d com.google.android.gms broadcastIntent}}) : type=2 triggerAtTime=3125756 win=-1 tElapsed=3125756 maxElapsed=4273831 interval=0 flags=0x021分钟后】唤醒
01-02 11:36:36.083157 19796 19962 V AlarmManager: sending alarm Alarm{3f98b29 type 2 when 3125756 com.google.android.gms} success 
01-02 11:36:36.086213 19796 19962 V AlarmManager: sending alarm Alarm{45ceeae type 3 when 3220372 com.google.android.gms} success 
01-02 11:36:36.109095 19796 19962 V AlarmManager: sending alarm Alarm{baaa7dc type 3 when 3220503 com.google.android.gms} success 

【GMS】设置type 2的定时 5021914
01-02 11:36:36.129115 19796 19980 V AlarmManager: APP set(PendingIntent{d2865c8: PendingIntentRecord{9e67661 com.google.android.gms startService}}) : type=3 triggerAtTime=5021914 win=1349985 tElapsed=5021914 maxElapsed=6371899 interval=0 flags=0x0
01-02 11:36:36.568509 19796 20553 V AlarmManager: APP set(PendingIntent{d204a4: PendingIntentRecord{20a678d com.google.android.gms broadcastIntent}}) : type=2 triggerAtTime=5022246 win=-1 tElapsed=5022246 maxElapsed=6372151 interval=0 flags=0x0
【GMS 的兄弟】


【30分钟后】唤醒
01-02 12:06:37.123076 19796 19962 V AlarmManager: sending alarm Alarm{2ec4f79 type 3 when 5021914 com.google.android.gms} success 
01-02 12:06:37.126226 19796 19962 V AlarmManager: sending alarm Alarm{f6ae4be type 2 when 5022246 com.google.android.gms} success 

【GMS】设置type 23 的定时 5021914
01-02 12:06:37.160249 19796 20804 V AlarmManager: APP set(PendingIntent{8a346c: PendingIntentRecord{e596a35 com.google.android.gms startService}}) : type=3 triggerAtTime=6822956 win=1349994 tElapsed=6822956 maxElapsed=8172950 interval=0 flags=0x0
01-02 12:06:37.470891 19796 20804 V AlarmManager: APP set(PendingIntent{bb9909c: PendingIntentRecord{20a678d com.google.android.gms broadcastIntent}}) : type=2 triggerAtTime=6823197 win=-1 tElapsed=6823197 maxElapsed=8173139 interval=0 flags=0x0
01-02 11:09:28.914825 19796 20552 V AlarmManager: APP set(PendingIntent{7f87597: PendingIntentRecord{3eff609 com.google.android.gms broadcastIntent}}) : type=3 triggerAtTime=6994715 win=4049997 tElapsed=6994715 maxElapsed=11044712 interval=0 flags=0x04分钟后】唤醒
01-02 12:40:37.136259 19796 19962 V AlarmManager: sending alarm Alarm{3d1c846 type 3 when 6822956 com.google.android.gms} success
01-02 12:40:37.139299 19796 19962 V AlarmManager: sending alarm Alarm{77bca07 type 2 when 6823197 com.google.android.gms} success
01-02 12:40:37.143821 19796 19962 V AlarmManager: sending alarm Alarm{fad5734 type 3 when 6994715 com.google.android.gms} success

【GMS】设置type 23 的定时 8503003
01-02 12:04:37.202920 19796 19808 V AlarmManager: APP set(PendingIntent{711ded4: PendingIntentRecord{78a87d com.google.android.gms broadcastIntent}}) : type=2 triggerAtTime=8503003 win=0 tElapsed=8503003 maxElapsed=8503003 interval=0 flags=0x160分钟后】唤醒
01-02 13:04:38.107170 19796 19962 V AlarmManager: sending alarm Alarm{f5803d0 type 2 when 8503003 com.google.android.gms} success

【GMS】设置type 23 的定时 8862945
01-02 12:40:37.204791 19796 20552 V AlarmManager: APP set(PendingIntent{70b9a1e: PendingIntentRecord{a19f2ff com.google.android.gms startService}}) : type=3 triggerAtTime=8862945 win=1349994 tElapsed=8862945 maxElapsed=10212939 interval=0 flags=0x0
01-02 12:40:37.511517 19796 20876 V AlarmManager: APP set(PendingIntent{5eef564: PendingIntentRecord{20a678d com.google.android.gms broadcastIntent}}) : type=2 triggerAtTime=8863239 win=-1 tElapsed=8863239 maxElapsed=10213182 interval=0 flags=0x030分钟后】唤醒
01-02 13:10:39.113842 19796 19962 V AlarmManager: sending alarm Alarm{ec681da type 3 when 8862945 com.google.android.gms} success
01-02 13:10:39.117196 19796 19962 V AlarmManager: sending alarm Alarm{eb1e60b type 2 when 8863239 com.google.android.gms} success


【GMS】设置type 23 的定时 10664926
01-02 13:10:39.132902 19796 22502 V AlarmManager: APP set(PendingIntent{d587ce8: PendingIntentRecord{82c0f01 com.google.android.gms startService}}) : type=3 triggerAtTime=10664926 win=1349995 tElapsed=10664926 maxElapsed=12014921 interval=0 flags=0x0
01-02 13:10:39.594389 19796 20938 V AlarmManager: APP set(PendingIntent{b83f53a: PendingIntentRecord{20a678d com.google.android.gms broadcastIntent}}) : type=2 triggerAtTime=10665202 win=-1 tElapsed=10665202 maxElapsed=12015055 interval=0 flags=0x030分钟后】唤醒
01-02 13:44:38.123607 19796 19962 V AlarmManager: sending alarm Alarm{7f23eb7 type 3 when 10664926 com.google.android.gms} success
01-02 13:44:38.126259 19796 19962 V AlarmManager: sending alarm Alarm{9caa624 type 2 when 10665202 com.google.android.gms} success

【GMS】设置type  的定时 12103965
01-02 13:04:38.165847 19796 20179 V AlarmManager: APP set(PendingIntent{ae0c6ce: PendingIntentRecord{f9b99ef com.google.android.gms broadcastIntent}}) : type=2 triggerAtTime=12103965 win=0 tElapsed=12103965 maxElapsed=12103965 interval=0 flags=0x160分钟后】唤醒
01-02 14:04:39.101542 19796 19962 V AlarmManager: sending alarm Alarm{c03c031 type 2 when 12103965 com.google.android.gms} success

其他GCM推送带来的唤醒

主要是注册如下配置的应用

        <receiver android:exported="true" android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
                <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
                <category android:name="com.staros.analyticssdk"/>
            </intent-filter>
        </receiver>
        <receiver android:exported="false" android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"/>
        <service android:exported="true" android:name="com.google.firebase.iid.FirebaseInstanceIdService">
            <intent-filter android:priority="-500">
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>
        <provider android:authorities="com.staros.analyticssdk.firebaseinitprovider" android:exported="false" android:initOrder="100" android:name="com.google.firebase.provider.FirebaseInitProvider"/>
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>

上述存在
两个定时分别是30和60分钟一次的定时,这里代码无法修改故进行对齐唤醒处理

对齐唤醒-优化后的改善

对齐唤醒

进一步优化

AlarmManagerService.java

        if(operation != null && isDeviceIdle && isSkipAlarm(operation)){
            Binder.restoreCallingIdentity(oldId);
            return;
        }

    private boolean isSkipAlarm(final PendingIntent operation){
        if(isActiveNetwork()){
            return isGmsGcmAlarmWithconnect(operation);
        }

        if(isGmsGcmAlarmWithDisconnect(operation)){
            return true;
        }

        return false;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值