
技术
文章平均质量分 79
龙之叶
生命不息,折腾不止
展开
-
企业微信登录Foxmail邮箱详细指南
在日常工作中,许多企业选择使用企业微信作为主要的沟通工具,而企业微信邮箱则是其集成的邮件服务。然而,随着邮件数量的不断增加,你可能会遇到邮箱容量不足的问题,系统可能会提示“邮箱容量不足20%”,这时,将企业微信邮箱与Foxmail等第三方邮件客户端结合使用,可以大大提升邮件管理的便捷性和效率。原创 2025-01-20 09:40:58 · 6622 阅读 · 0 评论 -
Android13实时刷新频率的实现代码
RefreshRateOverlay实际Layer显示刷新频率。初始化RefreshRateOverlay。设置->开发者选项->显示刷新频率。原创 2025-01-06 11:41:45 · 3209 阅读 · 2 评论 -
Windows 11 右键菜单恢复指南
右键菜单是电脑操作系统中一个非常实用的功能,它允许用户快速执行多种操作,如复制、粘贴、删除和重命名等。然而,在Windows 11(Win11)中,一些常用的右键选项可能被隐藏,给用户带来不便。原创 2024-11-25 09:47:00 · 8386 阅读 · 0 评论 -
Android13 默认开启冻结进程
Google 原生系统在 Android 11 及更高版本中引入了 CACHE 应用的 CPU 冻结功能。当应用进入后台且无活动状态时,系统会经过一段时间的状态判断,将该应用的进程 ID 迁移至冻结的 cgroup 节点,实现 CACHE 应用的冻结。这一机制旨在减少后台活跃缓存应用所占用的 CPU 资源,进而达到节省电量的效果。而当应用重新回到前台时,系统会迅速解冻该进程,确保应用的快速启动。原创 2024-11-11 09:49:25 · 2880 阅读 · 0 评论 -
Android应用保活攻略
Android应用保活是一个老生常谈的话题,本文尽可能收集市面上的保活手段,希望能对你有所帮助。在Android系统中,保活(保持应用进程一直存活)就是为了让应用在后台持续运行,来实现某些特定的功能,如实时消息推送、定位服务等。然而,由于Android系统为了节省资源和保护用户隐私,通常会限制后台应用的运行。因此,我们需要采取一些策略来实现保活。以下是30个常见的Android保活手段,帮助你突破后台限制。保活策略可能会导致系统资源消耗增加、用户体验下降,甚至引发系统限制或用户卸载应用。原创 2024-06-03 09:59:33 · 4378 阅读 · 0 评论 -
Android SystemUI 通知面板实现
这篇文章给大家分享下Android SystemUI中下拉通知面板时所看到的开关面板(即QS面板)的实现原理,包括其整体架构,UI构建流程与事件处理流程,对这块感兴趣的同学可以看看。原创 2024-04-01 08:37:17 · 3719 阅读 · 0 评论 -
ANR问题分析总结
ANR(Application Not Responding)应用程序无响应。如果你应用程序在 UI 线程被阻塞太长时间,就会出现 ANR,通常出现 ANR,系统会弹出一个提示提示框,让用户知道,该程序正在被阻塞,是否继续等待还是关闭。原创 2024-03-25 08:08:58 · 3228 阅读 · 0 评论 -
Android ART编译模式解析
ART实际就是Android runtime的缩写,他是Android版本新的虚拟机。原创 2024-03-18 08:09:11 · 3306 阅读 · 0 评论 -
应用启动的优化措施
对于应用启动到底合不合格,除了固定的指标之外,还有一点就是跟对比机之间进行测试对比,看有没有差距。如果不达标或者跟对比机有差距,那就要对应用启动进行优化。对于性能差距的分析,需要抓取traces查看两台机器之间是否有区别。原创 2024-03-11 08:26:53 · 2072 阅读 · 0 评论 -
Android APP启动流程解析
而是通过一系列的调用,把请求传递给SystemServer的AMS。AMS服务统一调度系统中所有进程的Activity启动,而每个Activity的启动过程则由其所属的进程具体来完成。Android手机在开机Linux内核启动的时候,会加载system/core/init/init.rc文件,启动init进程,这个是Android特有的初始化程序,主要负责。在启动init进程后会fork Zygote进程,它是一个孵化器进程,它的main函数会创建好环境并且等待孵化,接到指令后就会开始fork子进程。原创 2024-03-04 08:17:48 · 2991 阅读 · 0 评论 -
Android 10 音量UI更新解析
在VolumeDialogControllerImpl收到来自AudioService的方法之后,就会调用mCallbacks的方法,由于调用的地方是在工作线程,所以在这里通过Handler转化为了UI线程去调用,在对应的实现地方就可以直接改变UI了。这里的mWork是通过子线程的Looper去初始化的,所以onVolumeChangedW也是在子线程执行的,那么我们mCallbacks的方法也是在子线程执行的,这里的分析也是和上面的第2小点的分析对应上了。View 层就完成了一个 Dialog 的显示。原创 2024-02-26 00:04:11 · 2903 阅读 · 0 评论 -
Android 10 Android音量调节
流类型最大音量音量默认音量含义514通话音量705铃声,通知音量等1505多媒体音量706闹钟音量1507蓝牙音量。原创 2024-02-19 07:56:56 · 2652 阅读 · 1 评论 -
Android 10.0 锁屏壁纸 LockscreenWallpaper
通过系统设置进行锁屏壁纸和桌面壁纸的设置。try {// whichWallpaper // 壁纸类型return 0;...// 壁纸类型// if (mDestination == DEST_HOME_SCREEN) { // 桌面壁纸// } else if (mDestination == DEST_LOCK_SCREEN) { // 锁屏壁纸// } else { // DEST_BOTH // 桌面壁纸 和 锁屏壁纸// }...原创 2024-02-12 06:45:03 · 3487 阅读 · 0 评论 -
Android 10.0 动态壁纸 LiveWallpaper
在 Android 中,壁纸分为动态与静态两种,但其实两者得本质都是一样。都以一个 Service 得形式在后台运行,在一个类型为 TYPE_WALLPAPER 的窗口上绘制内容。也可以这么去理解:静态壁纸是一种特殊的动态壁纸,它仅在窗口上渲染了一张图片,而不会对用户的操作做出反应。动态壁纸不能只应用于锁屏。原创 2024-02-05 08:57:43 · 3839 阅读 · 0 评论 -
onInterceptTouchEvent() 与 onTouch() 事件分析
本文主要分析 onTouch() 与 onTouchEvent() 事件的差异这里需要特别注意的是,onTouch()的执行 先于onClick()。原创 2024-07-01 00:55:06 · 3610 阅读 · 0 评论 -
Android 10.0 滑动解锁流程
滑动解锁相对于来说逻辑还是简单的,说白了就是对事件的处理,然后做一些事。这里主要从锁屏的界面Layout结构、touchEvent事件分发、解锁动作逻辑几个方面进行源码的分析。原创 2024-10-14 09:34:06 · 5274 阅读 · 0 评论 -
Android 事件分发机制详解(下)
这里需要特别注意的是,onTouch()的执行 先于onClick()主要包括:类型相关方法ActivityViewGroupView事件分发√√√事件拦截×√×事件消费√√√这个三个方法均有一个 boolean(布尔) 类型的返回值,通过返回 true 和 false 来控制事件传递的流程。PS: 从上表可以看到Activity和ViewActivity 作为原始的事件分发者,如果 Activity 拦截了事件会导致整个屏幕都无法响应事件,这肯定不是我们想要的效果。原创 2024-06-17 09:29:51 · 4241 阅读 · 1 评论 -
Android 事件分发机制详解(上)
Android事件分发机制是Android开发者必须了解的基础。当一个点击事件发生时,从Activity的事件分发开始(主要包括:dispatchTouchEvent()、onTouchEvent() 总结如下:那么ViewGroup的什么时候返回true / false?请继续往下看ViewGroup事件的分发机制。Android事件分发传递到Acitivity后,总是先传递到ViewGroup、再传递到View。流程总结如下:(假设已经经过了Acitivity事件分发传递并传递到ViewGroup。原创 2024-06-10 07:43:00 · 4872 阅读 · 0 评论 -
Android 10.0 截屏流程
通常未通过特殊定制的 Android 系统,截屏都是经过同时按住音量下键和电源键来截屏。本篇文章就只讨论使用这些特殊按键来进行截屏。这里我们就要明白事件是在哪里进行分发拦截的。通过源码的分析,我们发现是在PhoneWindowManager.java 中。原创 2024-10-21 10:02:56 · 4756 阅读 · 0 评论 -
Android10.0 人脸解锁流程分析
人脸解锁即用户通过注视设备的正面方便地解锁手机或平板。Android 10 为支持人脸解锁的设备在人脸认证期间添加了一个新的可以安全处理相机帧、保持隐私与安全的人脸认证栈的支持,也为安全合规地启用集成交易的应用(网上银行或其他服务)提供了一种容易实现的方式。Android 原生的人脸认证栈在 Android 10 是一种新的实现,与 Android P 不一样了。原创 2024-08-19 13:34:20 · 7002 阅读 · 2 评论 -
Android10.0 锁屏分析-KeyguardPatternView图案锁分析
首先一起看看下面这张图:通过前面锁屏加载流程可以知道在KeyguardSecurityContainer中使用getSecurityView()根据不同的securityMode inflate出来,并添加到界面上的。我们知道,Pattern锁所使用的layout是 R.layout.keyguard_pattern_view;comandroidkeyguard关于历史坐标。原创 2024-07-15 10:24:28 · 4596 阅读 · 0 评论 -
Ubuntu修改Swap交换空间大小
安装Ubuntu系统时,选择了默认空间分配方案,Swap空间仅1G,而实际的物理内存有32G,分给Swap空间至少为内存的1倍,最好是内存值的2倍,系统相当卡顿,重做系统后,费力部署的环境怎么又需要重新部署,头痛!原创 2025-04-07 09:35:58 · 9094 阅读 · 0 评论 -
Android 10.0 状态栏系统图标显示分析
SystemUI中StatusBar的图标控制器实现类为StatusBarIconControllerImpl,其继承了StatusBarIconController的接口,用于跟踪所有图标的状态,并将对应的状态发送给注册的图标管理器(IconManagers)。首先设置WiFi的状态信息,遍历mIconGroups分别执行StatusBarIconController接口中静态类IconManager中的onIconAdded()和onSetIconHolder()的回调。原创 2024-08-26 09:52:20 · 5427 阅读 · 0 评论 -
Android 10.0 Launcher 启动流程
在前面SystemUI启动流程中说到,在SystemServer中会去启动各种系统服务,这里的launcher也是启动的其中一个服务ActivityManagerService去启动的。在android10之前,系统四大组件的启动都是在ActivityManagerService中,在android10中,单独抽出了一个ActivityTaskManagerService,主要负责Activity的管理和调度。原创 2024-07-29 09:34:21 · 3908 阅读 · 0 评论 -
Android 10.0 Settings 加载流程
Settings的主Activity实质实现是在SettingsHomepageActivity.java内;Settings的主界面设置item的显示是在fragment上,fragment为TopLevelSettings.java,加载显示的布局为top_level_settings.xml;Settings主界面设置项item的加载显示主要分为两部分,一部分是xml定义的静态加载,xml为top_level_settings.xml;一部分是DashboardCategory来获取动态加载。原创 2024-07-22 09:50:38 · 4364 阅读 · 0 评论 -
Android 10.0 SystemUI启动流程
可以看到 startServicesIfNeeded() 循环 start 了config_systemUIServiceComponents 里的 Service,这些服务不是四大组件之一的 Service, 而是继承自 SystemUI 接口的服务,我们称之为 SystemUI服务。3、SystemServer会启动系统运行所需的众多核心服务和普通服务、以及一些应用及数据。在SystemServer 中的 main()方法中,就一句代码生成 SystemServer 对象,执行run 方法。原创 2024-07-08 10:34:57 · 4283 阅读 · 0 评论 -
喜欢 Android 14 的 14 个理由
和去年 8 月中旬发布的 Android 13 正式版不同,今年的 Android 14 正式版延后到了 10 月 4 日——也就是 Pixel 8 系列发布的同一天。原因我们似乎也能从 Google 宣传新特性中略窥一二:除了明确表示会率先向特定 Pixel 机型推送的 AI 壁纸生成,因为 OEM 厂商一般都会在系统界面、配色方案上搞「二创」,所以 Android 14 官方页面所宣传的锁屏时钟样式、黑白风格主题等特性,最后也极有可能只有 Pixel 用户才能体验到。原创 2023-11-02 20:37:59 · 369 阅读 · 0 评论 -
抛弃 scp 改用 rsync,让 Linux 下文件传输高效无比
Rsync 是一个快速且极其灵活的文件复制工具。它可以在本地进行复制,通过任何远程 shell 与另一个主机进行复制,或者通过远程 rsync 守护进程进行复制。它提供许多选项,可以控制其行为的各个方面,并允许对要复制的文件集进行非常灵活的指定。它以增量传输算法而闻名,该算法通过仅发送源文件与目标文件中现有文件之间的差异来减少通过网络发送的数据量。Rsync 广泛用于备份和镜像,作为日常使用的改进复制命令。原创 2023-11-01 20:20:37 · 587 阅读 · 0 评论 -
Android 13 Handler详解
Handler 是一套 Android 消息传递机制。在多线程应用场景中,将子线程中需要更新 UI 的操作消息,传递到 UI 主线程,从而实现子线程通知 UI 更新最终实现异步消息处理。说白了是用于线程之间的通信。Handler主要有4个重要类:Handler、Message、MessageQueue、Looper。Handler:负责消息的发送和处理,子线程中使用 sendMessage() 发送消息;在handleMessage()中处理。Message:消息载体,里面存储这线程消息。原创 2024-06-24 09:53:21 · 3788 阅读 · 0 评论 -
MarkDown 输出表格的方法
默认对其在网页部分被粘贴到Word里后显示为:表格标题居中对齐,表格正文左对齐。MarkDown用来输出表格很简单,比Word手搓表格简单多了,而且方便修改。A列强制左对齐,B列强制右对齐,C列强制居中对齐,D列默认对齐。默认对齐在PC端网页显示为表格标题和内容都居左对齐。原创 2025-03-17 09:31:19 · 2735 阅读 · 0 评论 -
长图切图怎么切
如图所示如图所示。原创 2023-10-30 20:23:32 · 791 阅读 · 0 评论 -
Android13源码添加系统服务
本文基于Android 13的framework层添加系统接口,为应用层提供读写函数、以及执行命令!原创 2023-10-27 21:05:49 · 891 阅读 · 0 评论 -
Android Studio错误修复Connect to repo.maven.apache.org:443
最近更新了AndroidStudio编写程序的时候发现gradle时老是报错误提示。原创 2023-10-25 20:24:16 · 3438 阅读 · 1 评论 -
Firefox无法访问localhost和127.0.0.1的问题与解决
在最近几次更新Firefox浏览器之后,忽然发现我无法访问本地搭建的网站“localhost”。无论我尝试多少次,页面始终无法加载,只是在不断地旋转加载图标。2.会出现一个警告页面,告知关于使用about:config页面的风险。4.找到该配置项,双击修改设置为true即可,这是对网络代理设置的一项更改,意味着允许本地主机的网络拦截。,然后按Enter键,引导进入Firefox的配置页面。1.在Firefox浏览器中,您需要在URL栏中输入。Firefox版本:116.0.3(64位)原创 2023-10-21 12:21:19 · 6124 阅读 · 3 评论 -
Android 13 深色主题切换流程解析
这里注意:在 ActivityThread.java 中有 performActivityConfigurationChanged() 和 performLaunchActivity() 两个方法,都可以更新资源主题,我个人认为一个是配置单独某个应用的,一个是配置全局的。persistNightMode() 方法简单,先看 UiModeManagerService#persistNightMode()学习笔记:Android小白,这位置网上没资料,通过自己打日志阅读代码走的流程,可能有理解错误的地方。原创 2024-12-30 10:44:55 · 3450 阅读 · 1 评论 -
Android View的渲染过程
如果是一个具体的View,那就相当简单了,默认的实现就可以了。如果是ViewGroup会相对复杂一些,取决于如何从水平和垂直方向上约束子view,然后进行遍历,并把约束考虑进去。可以参考LinearLayout和RelativeLayout的onMeasure实现。如果是自定义View的话,不需要做什么。如果是自定义的ViewGroup的话,要看设计的目的,是如何排列子view的。原创 2023-08-12 10:17:01 · 354 阅读 · 0 评论 -
如何让Android设备实现息屏显示
息屏显示就是手机在息屏状态下,屏幕上会显示当前时间、日期信息,无需点亮手机屏幕即可查看。息屏显示的原理主要是利用了OLED屏幕像素点自发光的特性,仅显示时间的像素点发光,功耗相比LCD屏幕要低很多。原创 2023-07-01 09:52:26 · 2580 阅读 · 0 评论 -
Android13下拉状态栏QS面板的加载流程解析
很明显,调用 tunerService 里的 addTunabe() 方法,跟进去会发现,最终的是调用的 TunerServiceImpl 里面的 addTunabe() 方法。在这里,与Android 9.0及其以下版本实例化 QSTileHost类的方式不一样,这里是通dagger来实例化的。上述代码中第一次 tileList 为空,调用了 getDefaultSpecs(context) 获取字符串,该方法比较简单,这里就不做分析了。看到这里通过对应的字符串分别实例化了对应的 Tile。原创 2024-12-23 15:34:33 · 4419 阅读 · 1 评论 -
解决Ubuntu22.04 Wifi连接断开的问题
将其中的lcpe-echo-failure 的参数改为40。原创 2023-05-20 18:19:14 · 2781 阅读 · 0 评论 -
Markdown基本语法
Markdown 是一种轻量级标记语言, 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。由于 Markdown 的,并且对于图片,图表、数学式都有支持,许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。1、因为是纯文本,所以只要支持Markdown的地方都能获得一样的编辑效果,可以让作者摆脱排版的困扰,专心写作。2、操作简单。原创 2023-05-13 18:34:36 · 83 阅读 · 0 评论