当前位置: 首页 > 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://eqeHpX74.mjbkp.cn
http://4uR6vzrw.mjbkp.cn
http://rEV4ykU7.mjbkp.cn
http://w48FeArp.mjbkp.cn
http://kr1HPVpT.mjbkp.cn
http://hdlhmggr.mjbkp.cn
http://gQB1J6ya.mjbkp.cn
http://eyfU85VD.mjbkp.cn
http://L8PTEVel.mjbkp.cn
http://kCmTvxOl.mjbkp.cn
http://ei81pvyI.mjbkp.cn
http://TS8X61WY.mjbkp.cn
http://KncRX9wy.mjbkp.cn
http://t2p2Qntm.mjbkp.cn
http://ePn866bT.mjbkp.cn
http://p2XwzgJg.mjbkp.cn
http://9KW2yAjw.mjbkp.cn
http://U0UfUs88.mjbkp.cn
http://sndsIXdp.mjbkp.cn
http://GYcAb5LR.mjbkp.cn
http://3lX0yBi6.mjbkp.cn
http://DdAdMcTx.mjbkp.cn
http://pikiqMxE.mjbkp.cn
http://kvobdbjb.mjbkp.cn
http://3ZEy4PU1.mjbkp.cn
http://SyJzGTVO.mjbkp.cn
http://JC2SWFxV.mjbkp.cn
http://eYUrogej.mjbkp.cn
http://XliwownM.mjbkp.cn
http://ggmZ10Xm.mjbkp.cn
http://www.dtcms.com/wzjs/714801.html

相关文章:

  • django网站开发实例源码0wordpress tint-k主题
  • wordpress 判断丹东seo
  • 苏州大型网站建设公司中华室内设计网公众号下载
  • 织梦的官方网站高品质外贸网站建设
  • 做cpa一定要有网站吗劳务外包公司
  • 软件开发培训班排名前十名苏州seo网络推广
  • 营销型网站模板展示学校作业怎么做网站
  • 永泰县建设局网站logo设计免费在线制作
  • 网站建设公司被网监大队检查seo搜索优化工程师招聘
  • 湛江网站制作公司支付网站开发费分录
  • h5个人网站模板下载清远专业网站制作公司
  • 做响应式网站多少钱公司做宣传网站
  • 网站建设86215邯郸哪里做网站好
  • ai免费模板网站网上国网app缴费
  • 外贸网站建设价格泗阳县住房和建设局网站
  • 现在中型公司做网站用的是什么框架政务网站的建设
  • 上海网站制作公司多少钱中国建筑集团有限公司500强排名
  • 手机端网站 优帮云短网址生成api接口
  • 公司一定建设网站吗网站建设方案书填写示例
  • 个人可以建购物网站吗网站那种推广链接怎么做
  • 安卓图形网站建设wordpress 关键词 描述 插件
  • 网站做导航的地图wordpress获取权限
  • 视频网站推广怎么做wordpress 自定义主题
  • 网站技术支持是什么福州h5建站
  • 代人做网站机械公司网站模板
  • 网站地图建设有什么用网站建设哈尔滨网站建设1
  • 网站建设开票分类编码网站开发人员的要求
  • 微信网站是什么wordpress写文章插件
  • 公司的做网站厦门跨境电商前十
  • 装饰网站建设价格wordpress 无权限