当前位置: 首页 > wzjs >正文

做微博网站好不好免费做网站. 优帮云

做微博网站好不好,免费做网站. 优帮云,视频链接下载到本地,wordpress充值金币摘要: 现象: 应用宝的NotificationManagerService_post_com.tencent.android.qqdownloader在Doze下也可以频繁持锁,很猛啊。 解决方案: 直接拦截持锁就行,也可以冻结,限制服务或主动释放锁,…

摘要:

现象:

应用宝的NotificationManagerService_post_com.tencent.android.qqdownloader在Doze下也可以频繁持锁,很猛啊。

解决方案:

直接拦截持锁就行,也可以冻结,限制服务或主动释放锁,反正解决起来很容易。就是没想明白,为了保活目的这么拼干啥。因为在AOSP代码也就是一个if else就屏蔽掉了哈,甚至都不需要查杀或冻结操作。

分析

相关逻辑系统内部调用链

1.应用调用 notify() 后,系统服务的执行流程如下:

2.应用进程 → Binder 调用 → NotificationManagerService.notify()

3.NotificationManagerService 内部处理通知:

4.最终释放 WakeLock 的逻辑由 PostNotificationTracker 在通知处理完成后触发。

其实消息通知触发也没关系,但是太频繁就过分了,会带来频繁的持锁,导致功耗变大哈。

0

日志

从日志看:感觉是定时周期1分钟,就行不断地持锁。这样做的目的是啥,我只知道对手机待机功耗是不友好的哈。

Line 2118: 05-26 17:34:43.610025  1623  1663 D PowerManagerService: acquireWakeLockInternal: lock=110346082, flags=0x1, tag="NotificationManagerService:post:com.tencent.android.qqdownloader", ws=WorkSource{10225 com.tencent.android.qqdownloader}, uid=1000, pid=1623Line 2773: 05-26 17:35:45.094949  1623  3364 D PowerManagerService: acquireWakeLockInternal: lock=206925355, flags=0x1, tag="NotificationManagerService:post:com.tencent.android.qqdownloader", ws=WorkSource{10225 com.tencent.android.qqdownloader}, uid=1000, pid=1623Line 3403: 05-26 17:36:46.593976  1623  3364 D PowerManagerService: acquireWakeLockInternal: lock=200498714, flags=0x1, tag="NotificationManagerService:post:com.tencent.android.qqdownloader", ws=WorkSource{10225 com.tencent.android.qqdownloader}, uid=1000, pid=1623Line 4148: 05-26 17:37:48.095304  1623  3450 D PowerManagerService: acquireWakeLockInternal: lock=91113790, flags=0x1, tag="NotificationManagerService:post:com.tencent.android.qqdownloader", ws=WorkSource{10225 com.tencent.android.qqdownloader}, uid=1000, pid=1623Line 4949: 05-26 17:38:49.596294  1623  3364 D PowerManagerService: acquireWakeLockInternal: lock=101527642, flags=0x1, tag="NotificationManagerService:post:com.tencent.android.qqdownloader", ws=WorkSource{10225 com.tencent.android.qqdownloader}, uid=1000, pid=1623Line 5400: 05-26 17:39:49.768274  1623  3451 D PowerManagerService: acquireWakeLockInternal: lock=190337700, flags=0x1, tag="NotificationManagerService:post:com.tencent.android.qqdownloader", ws=WorkSource{10225 com.tencent.android.qqdownloader}, uid=1000, pid=1623

源码

日志对应的源码:​​​​​​​

private PostNotificationTracker acquireWakeLockForPost(String pkg, int uid) {    // The package probably doesn't have WAKE_LOCK permission and should not require it.    return Binder.withCleanCallingIdentity(() -> {        WakeLock wakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,                "NotificationManagerService:post:" + pkg); // 日志打印位置        wakeLock.setWorkSource(new WorkSource(uid, pkg));        wakeLock.acquire(POST_WAKE_LOCK_TIMEOUT.toMillis());        return mPostNotificationTrackerFactory.newTracker(wakeLock);    });}

相关逻辑系统内部调用链

1.应用调用 notify() 后,系统服务的执行流程如下:

2.应用进程 → Binder 调用 → NotificationManagerService.notify()

3.NotificationManagerService 内部处理通知:

4.最终释放 WakeLock 的逻辑由 PostNotificationTracker 在通知处理完成后触发。​​​​​​​

// 应用发送通知的典型代码NotificationManager nm = getSystemService(NotificationManager.class);Notification notification = new Notification.Builder(this, "channel_id")        .setContentTitle("Test")        .setContentText("Trigger WakeLock")        .setSmallIcon(R.drawable.ic_notification)        .build();nm.notify(1, notification);  // 触发内部 WakeLock 逻辑void enqueueNotificationInternal(...) {    // 检查权限、频道状态等    ...    // 获取 WakeLock(关键步骤)    PostNotificationTracker tracker = acquireWakeLockForPost(pkg, uid);    // 投递通知到系统UI    mHandler.post(new EnqueueNotificationRunnable(tracker));}最终释放 WakeLock 的逻辑由 PostNotificationTracker 在通知处理完成后触发。

解决方案:

直接拦截持锁就行,也可以冻结,限制服务或主动释放锁,反正解决起来很容易。就是没想明白,为了保活目的这么拼干啥。因为在AOSP代码也就是一个if else就屏蔽掉了哈,甚至都不需要查杀或冻结操作。

http://www.dtcms.com/wzjs/590143.html

相关文章:

  • 网站首页 seo做纺织的用什么网站
  • 如何组织公司做网站指定网站怎么设置路由器只访问
  • 邢台网站建设好蜘蛛网站开发好吗
  • 怎让做淘宝网站可以先做网站后备案吗
  • 网站seo优化实例如何做产品网站网页
  • 福田网站建设设计公司做手机网站需要多少钱
  • 信阳电子商务平台网站建设中文域名网站跳转
  • 山门做网站制作网站软件app
  • 网站做多少屏合适常州网油卷介绍
  • 农村建设网站的重要性加强普法网站建设的通知
  • 陕西的网站建设公司排名asp跳转到别的网站
  • 做淘宝内部优惠券网站要钱么沈阳网站建设小志
  • 天津的网站建设做外汇看的国外网站
  • 律所网站方案如何制作简单自己的网页
  • 电影网站制作教程及步骤佛山网络公司网站建设
  • 南昌网站优化拖拉建网站
  • 素材网站建设需要多少费用网络游戏免费加盟代理
  • win2008 建立网站wordpress主题消失
  • 企业网站管理系统湖南岚鸿怎样开通微信小商店
  • 沥林网站建设马甲比较好网站建设出初级者选哪家
  • 天津卓荣建设集团网站域名解析到wordpress
  • 查企业网站有哪些网站开发团队需配备什么岗位
  • 自己做的网站怎么被搜录炫的手机网站
  • 深圳网站建站建设网站上关键词的推广怎么做
  • 网站信息化建设建议和意见怎么做页眉
  • 网站开发流程书籍没有网站可以做cpa广告么
  • 大庆北京网站建设wordpress添加变量
  • 站外推广渠道网站开发都是用什么框架
  • aspx网站架设查询系统网站模板
  • 网站开发用什么语言比较好北京建设网上银行