自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (1)
  • 收藏
  • 关注

原创 年轻人一定要去大城市才有好发展吗?

举个例子,小明是一个喜欢安逸的年轻人,他毕业后选择回到家乡的小镇工作。在那里,他创办了一个小小的图书馆,为孩子们提供阅读的乐趣。结果,小镇的孩子们都非常喜欢他,他的图书馆越办越红火。有一天,他遇到了一个投资人,对方看中了他的项目,最后他把图书馆开到了大城市。当然,大城市就像是一个巨大的海鲜市场,让你眼花缭乱,应接不暇。所以,并不是一定要去大城市才有好的发展,关键是要找到适合自己的路。大城市有它的优点,比如机会多、文化丰富等等,但是小城市也有它的优点,比如生活节奏慢、人情味浓等等。

2024-10-05 07:43:32 322

原创 写作两年,我变的更加坦然

后来的事,我文章中提到了很多,因为在公司看到很多人,明明不喜欢现在的工作,却硬撑着去做,整日除了抱怨还是抱怨。而公司,也只是把员工当成了一颗螺丝钉而已,你好用的时候,多用你,不好用了,直接换掉就是了。我没有去考虑定位什么的,更没考虑运营,再说也不会。只不过我始终坚信一个逻辑:只要每天坚持读书和写作,不断完成输入和输出的闭环,那我整个人是在不断进步的,只要你是在不断完善自己,总会有适合你的机会。从最近半年AI的使用和我读的一些书上,都验证了我的设想,使用AI的时候,需要你有清晰的表达,才能得到想要的结果。

2024-10-05 07:43:06 517

原创 推理还原的干货

其实看似一个很简单的推理还原,其实需要创作者很完整的一个推理逻辑链。每一行每一业,只要认真,都是可以做出一点成绩和成就感的事。隐藏信息拼凑、因果导致果推因、规则还原现象。背后还是需要精心打磨才能行的。给出识别变形信息的方法或线索。如何把关键信息变成伪解答。从下层故事到上层故事。

2024-10-04 08:59:56 957

原创 我是如何写作的?

还记得小学时,有一次做一道阅读理解题,我和与我排名相同的女生写的都是:把十八缸的水都用完,字就写好了。到现在,我还是不喜欢背。我想,真正写作好的人一定用心背了不少好文章吧,所以下笔如有神,其他人想不到、模仿不来。从小学三年级开始学写作文,看的作文书,老师布置作文题目,内容我都是自己写的。全班好像只有我一个人填得恰当,那是个比喻句,形容一个人淋雨了,我填的是“落汤鸡”,我小时候看到过这个词。我也不知道看什么写作方面的书或文学书能让我悟到,我偶尔看了写作方面的书,还是没有用到,感觉学不到什么东西。

2024-10-04 08:59:40 868

原创 变得生疏起来能有多快

电脑生的像不是我的了,卡的不得了,不知道是因为放在那里没有用的原因,还是电脑真的老了的原因。我已经好长时间没有打开我的电脑了,今天打开电脑,啥啥啥都找不到,甚至连在那里连网都找不到。本来下面是有一行菜单栏的,里面可以直接点击网络链接。古人言,三天不练手生,三天不看眼生。整半天了,还在页面卡着呢!三五个月没有用电脑了吧?

2024-10-03 07:57:09 329

原创 文字的力量

今天看到这样一段话说越是气场平和、心性温柔的人会怎样怎样,后面的我没再去看,只是凝视着前面这八个字的形容词,以前我也可以说自己是气场平和、心性温柔,但经过前两天之后,我发现如果别人触碰到我的逆鳞我马上会变得暴躁如雷,声势吓人,对方愣了几下没想到我突然变成这样,输出的都是一些拉低他自己身份的不过脑子的话,我自然不会去理他,免得我也变成像他那样的人。但转念一想,这也是我思考过的,基于提出来的观点得到自己的想法也会在潜移默化中化为自己的,说不定哪次写点什么东西就用上了呢。我就想文字的力量是多么的强大。

2024-10-03 07:56:47 966

原创 用生命做事,无人能超越

我想从一个母亲的角度来讲,养育一个孩子,最重要的恐怕还是要打开他们内心的空间,有勇气去面对未知,敢于去闯荡。凡是投入生命进行创作,投入生命去做事,不计时间,不计成本,不计后果,这样出来的作品,无人能超越,甚至自己都无法超越。很多人,用这样的机会,彻底改写了自己的人生路,比如凤姐的扮演者邓婕,比如林黛玉的扮演者陈晓旭等。去看看她们进入剧组前的工作,真的是来自全国各地的,各种身份的人:有售货员,有皮鞋厂的员工,有汽修厂员工。这么重要的一个角色,执拗于一个正式的身份,最终与北京无缘,沿袭了自己原来的职业轨迹。

2024-09-30 09:14:05 416

原创 Android资源翻译工具教程

1.打开String Translation Tool (STT),点击界面上的“Select Android Project”按钮2.在弹出的文件选择对话框中,浏览并选中您希望进行翻译的Android项目路径3.等待工具扫描项目资源文件,这可能需要一些时间,具体取决于文件大小。扫描完成后,选择您希望翻译的资源文件,并点击“Start Export”按钮。工具将在指定目录下生成一个名为“strings.xlsx”的Excel文件,该文件包含了所有待翻译的字符串。

2024-09-30 09:11:41 1352

原创 Android14 屏蔽ANR和Crash弹窗

Android系统在应用发生Crash/ANR的时候,总会弹出一个提示对话框,但是现在部分客户不想要这样的对话框,要求移除。

2024-09-23 09:41:30 2189

原创 Android13 屏蔽ANR和Crash弹窗

Android系统在应用发生Crash/ANR的时候,总会弹出一个提示对话框,但是现在部分客户不想要这样的对话框,要求移除。

2024-09-16 13:09:50 2405

原创 Android10源码刷入Pixel2以及整合GMS

名称作用ramdisk 为内存文件系统,是一个最小型文件系统, 在内核启动的时候会将其作为根文件系统进行挂,文件实际为 gzip 文件,可以直接解压boot.imgboot.img 包含内 Linux 内核镜像 zImage 和根文件系统 ramdisk 文件,镜像基本构成为:头部,内核,ramdisk 镜像dtbo.imgdtb overlay, 叠加 DT。由原始设计制造商 (ODM)/原始设备制造商 (OEM) 提供的设备专用配置system.img。

2024-09-09 09:58:17 3323

原创 Android13 动态控制状态栏和导航栏

在Android系统中,状态栏(StatusBar)、导航栏(NavigationBar)以及下拉菜单(通常称为Notification Shade或Quick Settings Panel)构成了用户界面不可或缺的三个元素,它们共同为用户提供了丰富的信息显示与便捷的交互体验。具体而言,状态栏实时展示着时间、电池电量、信号强度等关键信息;导航栏则集成了如返回、主页及多任务管理等基础操作按钮;而下拉菜单则让用户能够迅速访问快速设置项及通知详情。

2024-09-02 09:52:31 1834

原创 Android 10.0 状态栏系统图标显示分析

SystemUI中StatusBar的图标控制器实现类为StatusBarIconControllerImpl,其继承了StatusBarIconController的接口,用于跟踪所有图标的状态,并将对应的状态发送给注册的图标管理器(IconManagers)。首先设置WiFi的状态信息,遍历mIconGroups分别执行StatusBarIconController接口中静态类IconManager中的onIconAdded()和onSetIconHolder()的回调。

2024-08-26 09:52:20 5112

原创 Android10.0 人脸解锁流程分析

人脸解锁即用户通过注视设备的正面方便地解锁手机或平板。Android 10 为支持人脸解锁的设备在人脸认证期间添加了一个新的可以安全处理相机帧、保持隐私与安全的人脸认证栈的支持,也为安全合规地启用集成交易的应用(网上银行或其他服务)提供了一种容易实现的方式。Android 原生的人脸认证栈在 Android 10 是一种新的实现,与 Android P 不一样了。

2024-08-19 13:34:20 6212 2

原创 Android10.0 最近任务Recents功能分析

在Android10.0上,Recents功能分布在SystemUI和Launcher3里面集成.

2024-08-12 10:14:35 5723

原创 android10.0(Q) MTK 6765 user版本打开root权限

相比较 Android8.1、9.0 而言,Android10.0 版本 的 root变得相当麻烦,10.0 中引入了动态分区机制,同样的要想完全 adb root,需要 fastboot 解锁,然后关闭 verity 才能 adb remount 成功。我尝试和之前一样修改 fstab.in.mt6765 中的 ro 和 rw 初始值,容易导致无法正常开机,在这耗费了很长时间,就暂时先跳过吧,apk root 是 ok的。

2024-08-05 09:42:39 4522

原创 Android 10.0 Launcher 启动流程

在前面SystemUI启动流程中说到,在SystemServer中会去启动各种系统服务,这里的launcher也是启动的其中一个服务ActivityManagerService去启动的。在android10之前,系统四大组件的启动都是在ActivityManagerService中,在android10中,单独抽出了一个ActivityTaskManagerService,主要负责Activity的管理和调度。

2024-07-29 09:34:21 3812

原创 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 4273

原创 Android10.0 锁屏分析-KeyguardPatternView图案锁分析

首先一起看看下面这张图:通过前面锁屏加载流程可以知道在KeyguardSecurityContainer中使用getSecurityView()根据不同的securityMode inflate出来,并添加到界面上的。我们知道,Pattern锁所使用的layout是 R.layout.keyguard_pattern_view;comandroidkeyguard关于历史坐标。

2024-07-15 10:24:28 4471

原创 Android 10.0 SystemUI启动流程

可以看到 startServicesIfNeeded() 循环 start 了config_systemUIServiceComponents 里的 Service,这些服务不是四大组件之一的 Service, 而是继承自 SystemUI 接口的服务,我们称之为 SystemUI服务。3、SystemServer会启动系统运行所需的众多核心服务和普通服务、以及一些应用及数据。在SystemServer 中的 main()方法中,就一句代码生成 SystemServer 对象,执行run 方法。

2024-07-08 10:34:57 4096

原创 onInterceptTouchEvent() 与 onTouch() 事件分析

本文主要分析 onTouch() 与 onTouchEvent() 事件的差异这里需要特别注意的是,onTouch()的执行 先于onClick()。

2024-07-01 00:55:06 3568

原创 Android 13 Handler详解

Handler 是一套 Android 消息传递机制。在多线程应用场景中,将子线程中需要更新 UI 的操作消息,传递到 UI 主线程,从而实现子线程通知 UI 更新最终实现异步消息处理。说白了是用于线程之间的通信。Handler主要有4个重要类:Handler、Message、MessageQueue、Looper。Handler:负责消息的发送和处理,子线程中使用 sendMessage() 发送消息;在handleMessage()中处理。Message:消息载体,里面存储这线程消息。

2024-06-24 09:53:21 3516

原创 Android 事件分发机制详解(下)

这里需要特别注意的是,onTouch()的执行 先于onClick()主要包括:类型相关方法ActivityViewGroupView事件分发√√√事件拦截×√×事件消费√√√这个三个方法均有一个 boolean(布尔) 类型的返回值,通过返回 true 和 false 来控制事件传递的流程。PS: 从上表可以看到Activity和ViewActivity 作为原始的事件分发者,如果 Activity 拦截了事件会导致整个屏幕都无法响应事件,这肯定不是我们想要的效果。

2024-06-17 09:29:51 4173 1

原创 Android 事件分发机制详解(上)

Android事件分发机制是Android开发者必须了解的基础。当一个点击事件发生时,从Activity的事件分发开始(主要包括:dispatchTouchEvent()、onTouchEvent() 总结如下:那么ViewGroup的什么时候返回true / false?请继续往下看ViewGroup事件的分发机制。Android事件分发传递到Acitivity后,总是先传递到ViewGroup、再传递到View。流程总结如下:(假设已经经过了Acitivity事件分发传递并传递到ViewGroup。

2024-06-10 07:43:00 4677

原创 Android应用保活攻略

Android应用保活是一个老生常谈的话题,本文尽可能收集市面上的保活手段,希望能对你有所帮助。在Android系统中,保活(保持应用进程一直存活)就是为了让应用在后台持续运行,来实现某些特定的功能,如实时消息推送、定位服务等。然而,由于Android系统为了节省资源和保护用户隐私,通常会限制后台应用的运行。因此,我们需要采取一些策略来实现保活。以下是30个常见的Android保活手段,帮助你突破后台限制。保活策略可能会导致系统资源消耗增加、用户体验下降,甚至引发系统限制或用户卸载应用。

2024-06-03 09:59:33 3070

原创 Android通过adb命令模拟发送广播

通过命令行执行adb shell am broadcast发送广播通知。例1:--eitest_int100--eztruetaskID“1000”--esaltimeStamp说明:–es 表示使用字符串类型参数 --ei 表示int类型参数 --ez 表示boolean类型参数 --el 标示long类型的参数 --esal 标示string类型的数据 蓝色为key,红色为value。

2024-05-27 09:47:42 2455

原创 Android.mk变量解析

Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库文件等。要掌握jni,就必须熟练掌握Android.mk的语法规范。

2024-05-20 15:48:29 2752 1

原创 Android 14 Zygote进程解析

init进程启动后,最重要的一个进程就是Zygote进程,Zygote是所有应用的鼻祖。SystemServer和其他所有Dalivik虚拟机进程都是由Zygote fork而来。Zygote进程由app_process启动,Zygote是一个C/S模型,Zygote进程作为服务端,其他进程作为客户端向它发出“孵化-fork”请求,而Zygote接收到这个请求后就“孵化-fork”出一个新的进程。

2024-05-13 09:43:56 2450

原创 Android 14 init进程解析

当bootloader启动后,启动kernel,kernel启动完后,在用户空间启动init进程,再通过init进程,来读取init.rc中的相关配置,从而来启动其他相关进程以及其他操作。init进程启动主要分为两个阶段:创建文件系统目录并挂载相关的文件系统初始化日志输出启用SELinux安全策略为第二阶段做准备创建进程会话密钥、并初始化属性系统执行SELinux第二阶段、并恢复一些文件安全上下文新建epoll、并初始化子进程终止信号处理函数设置其他系统属性、并开启属性服务。

2024-05-06 11:35:34 2562

原创 Android 14 Handler 源码解析

Handler 是一套 Android 消息传递机制。在多线程应用场景中,将子线程中需要更新 UI 的操作消息,传递到 UI 主线程,从而实现子线程通知 UI 更新最终实现异步消息处理。说白了是用于线程之间的通信。Handler主要有4个重要类:Handler、Message、MessageQueue、Looper。**Handler:**负责消息的发送和处理,子线程中使用 sendMessage() 发送消息;在handleMessage()中处理。

2024-04-29 08:03:20 1143

原创 Android14 StatusBar顶部图标加载流程

PhoneStatusBarPolicy:定义了系统通知图标的设置策略;StatusBarSignalPolicy:定义了状态栏网络信号策略;前面有过分析,这次以 PhoneStatusBarPolicy 为例进行分析;@Override// 省略部分代码......// 这里Android 14 与前面 Android 11 的初始化方法有点不同。// 创建整个SystemUI视图并添加到WindowManager中//这个重点方法,创建相关的视图// 省略部分代码......

2024-04-22 08:58:14 2635

原创 Android 14 NotificationChannels与Notification的加载流程

这部分我觉得三方应用使用的较多,分析的时候也是源码与三方应用结合分析的。

2024-04-08 09:00:40 2686 1

原创 Android SystemUI 通知面板实现

这篇文章给大家分享下Android SystemUI中下拉通知面板时所看到的开关面板(即QS面板)的实现原理,包括其整体架构,UI构建流程与事件处理流程,对这块感兴趣的同学可以看看。

2024-04-01 08:37:17 3230

原创 ANR问题分析总结

ANR(Application Not Responding)应用程序无响应。如果你应用程序在 UI 线程被阻塞太长时间,就会出现 ANR,通常出现 ANR,系统会弹出一个提示提示框,让用户知道,该程序正在被阻塞,是否继续等待还是关闭。

2024-03-25 08:08:58 2790

原创 Android ART编译模式解析

ART实际就是Android runtime的缩写,他是Android版本新的虚拟机。

2024-03-18 08:09:11 2759

原创 应用启动的优化措施

对于应用启动到底合不合格,除了固定的指标之外,还有一点就是跟对比机之间进行测试对比,看有没有差距。如果不达标或者跟对比机有差距,那就要对应用启动进行优化。对于性能差距的分析,需要抓取traces查看两台机器之间是否有区别。

2024-03-11 08:26:53 2018

原创 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 2920

原创 Android 10 音量UI更新解析

在VolumeDialogControllerImpl收到来自AudioService的方法之后,就会调用mCallbacks的方法,由于调用的地方是在工作线程,所以在这里通过Handler转化为了UI线程去调用,在对应的实现地方就可以直接改变UI了。这里的mWork是通过子线程的Looper去初始化的,所以onVolumeChangedW也是在子线程执行的,那么我们mCallbacks的方法也是在子线程执行的,这里的分析也是和上面的第2小点的分析对应上了。View 层就完成了一个 Dialog 的显示。

2024-02-26 00:04:11 2650

原创 Android 10 Android音量调节

流类型最大音量音量默认音量含义514通话音量705铃声,通知音量等1505多媒体音量706闹钟音量1507蓝牙音量。

2024-02-19 07:56:56 2513 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 3275

TranslationTools-v3.1511.01

一、工具概述 Android字符串导入导出工具(简称String Import/Export Tool)是一种专为Android开发者设计的辅助软件,旨在帮助开发者轻松地从Android项目中导出所有字符串资源到一个易于编辑的格式(如Excel或CSV文件),并在翻译完成后将这些资源重新导入到项目中。这样做不仅提高了工作效率,还减少了因手动操作而可能引入的错误。 二、主要功能 导出功能: 自动扫描:工具能够自动扫描指定Android项目中的所有资源文件(主要是res/values目录下的XML文件),提取其中的字符串资源。 灵活筛选:支持按文件类型、语言或特定关键字筛选要导出的字符串,以满足不同需求。 多种格式支持:导出的文件支持Excel(.xlsx)、CSV等多种格式,便于翻译人员使用熟悉的工具进行编辑。 导入功能: 智能匹配:在导入时,工具能够智能匹配原始资源文件中的字符串ID,确保翻译后的字符串能够准确无误地替换原有内容。 冲突检测:在导入过程中,如果检测到翻译后的字符串与项目中

2024-09-25

将密钥/证书导入现有Java密钥存储库的shell脚本

名称: keytool-importkeypair—将密钥/证书对导入现有Java密钥存储库的shell脚本 安装: 将keytool-importkeypair添加到PATH中 使用: Keytool-importkeypair [-k keystore] [-p storepass] -pk8 pk8 -cert cert -alias key_alias 导入密钥/证书对。命令格式 进入Java密钥库。 如果未指定密钥存储库,则将密钥对导入其中 ~/.用户主目录中的密钥存储库。 密码也可以从stdin读取。 例子: 向Android SDK添加Android平台级证书。 keytool-importkeypair -k ~/.android/debug.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform

2023-02-15

Android十二生肖

android的十二生资源!方便大家使用!

2013-09-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除