AI笔记本

2026年以前手搓博客一千多篇。如今 Claw、Cursor、Claude 等 AI Agent 横空出世。只需一句话,AI 就能生成文章、调整格式、润色语言,并一键自动发布。欢迎来到 AI 驱动博客时代 🚀

文章列表

熟悉Android源码目录结构
Android

熟悉Android源码目录结构

熟悉Android源码目录结构开发者需要了解系统运行的机制,了解一定深度的原理,而不是仅停留在会调用系统提供的API层面。阅读源码需要对源码目录结构有所了解,不然的话可能都找不到方向,因为整个Android项目很庞大复杂。源码按照一定的架构组织起来,详见Android 开源项目简介。1、源码根目录Android源码下载下来,根目录下很多一级子目录,每个目录都对应一层架构或者一块框架。①art:AR

3.0k
深色模式适配
Android

深色模式适配

深色模式适配之前Apple叫板微信不支持深色模式就下架,Google从Android Q也新增了暗黑主题,可见系统对深色模式愈发的重视。其实【深色模式】国内有些厂商两年前就已经实现。还有一些做的比较优秀有创意的应用就自带深色模式,用户可以在APP内的设置手动切换当前应用到【夜间模式】。今天就来看看有哪些手段可以实现应用的深色模式。深色模式Demo:android-DarkTheme1、系统暗黑主题

2.4k
Android

深入 AOSP:深色模式原理与 Framework 源码解析

深入 AOSP:深色模式原理与 Framework 源码解析深色模式(Dark Mode)是 Android 10(API 29)引入的一项系统级功能,允许用户在深色背景下使用设备,减少眼睛疲劳,延长电池续航。从 Framework 层面来看,深色模式涉及多个系统服务的协同工作。1、深色模式概述深色模式的核心组件包括: • UiModeManager:管理 UI 模式切换 • ThemeManag

161
再见!修罗开源论坛
分享

再见!修罗开源论坛

再见!修罗开源论坛好多天没看,今天打开Xiuno主站(bbs.xiuno.com),没想到弹出几个字让我感到震惊,作者关闭了修罗论坛主站,不再提供维护更新,非常可惜。19年国庆在家,思考应该规划技术的成长。记录积累的点点滴滴,以后也方便温度而知新。于是准备搭建一个博客,挑选了很多博客、论坛的框架作为模板(ROCBOSS、youBBS、Flarum中文、ThinkSAAS等)。最后选定Xiuno,因

1.9k
Android

源码理解apply()与commit()的区别

源码理解apply()与commit()的区别为什么SharedPreference保存数据首选apply()?commit()和apply()有什么区别?①commit()是同步的:将数据直接写入存储;apply()是异步的,先将修改提交到内存不会阻塞,之后再写入存储。②commit()有返回值标识是否成功写入;而apply()没有返回值。现在来看看源码到底是如何实现apply()和commit

1.8k
Android

理解WindowManager

理解WindowManagerWindowManager类顾名思义就是用来管理Window类。Window在另外一篇有探究理解Window。1、WindowManagerWindowManager也是接口,继承自ViewManager接口,它的实现类是WindowManagerImpl。都在android.view包中。1.1、ViewManagerViewManager接口中只定义了三个接口方法

2.3k
理解Window
Android

理解Window

理解Window什么是Window?从Activity的组成结构一文中我们了解到:每个Activity都包含一个Window。1、Window什么是Window?简单来说就是窗口,对其中的View进行管理。那么Window和Activity又有什么关系?现在来梳理并了解一下它们之间的关系。1.1、Window是抽象类Android中能看见的(比如:Activity、Dialog、Toast等)都是

1.9k
经典笔记本:eDiary
分享

经典笔记本:eDiary

经典笔记本:eDiary工作之后会越来越感觉到:好记性不如烂笔头。琐事太多,每天琐事缠身,大脑多任务“切换”容易丢失“上下文”造成失误。需要将代办事情分类记下,逐个按优先级处理(还有可能被“中断”)。以前一直用的是Windows系统自带的便签小程序,非常方便,随手打开记事,按颜色分类,小巧轻便。直到用了eDiary笔记本,这款诞生于1999年的个人软件简直业界良心,至今免费。作者已在这款软件上倾注

2.3k
Android

AMS服务的启动

AMS服务的启动Android开发是不是经常听说过AMS,什么是AMS?其实指的就是ActivityManagerService和一些关联的类,对系统运行时的Activity进行管理。以Android Q的源码开始阅读,了解AMS的启动过程,会发现不再由ActivityManagerService,而是由重构之后ActivityTaskManagerService类来启动管理Activity。1、

2.4k
Android

如何获取全局Context?

如何获取全局Context?开发过程中经常会用到Context,但是如果不在Activity或者Service,比如在Presenter层有时就无法获取到Context,非常棘手。有办法!定义全局应用唯一的一个静态Application Context,虽然是静态的,但是生命周期和应用一样,不存在内存泄漏。1、自定义Application定义静态的Context变量,重写onCreate()方法,

1.7k
各种Context及其初始化流程
Android

各种Context及其初始化流程

各种Context及其初始化流程Context在Android开发中实在是太重要的,用到的地方数不胜数。开发过程中没有Context是万万不能的,给人感觉Context简直是“万能”的。因为总有一些地方会用到Context,可以通过传参的方式传入;但是有些又没法通过传参传入,这时候可以使用全局ApplicationContext的方式获取到一个Context(见《如何获取全局Context?》)。

2.5k
Android

Binder线程池的启动

Binder线程池的启动Binder线程池在Android是一个非常重要的技术,访问其它应用ContentProvider的,应用进程和系统服务之间的通信等操作在服务端是运行在Binder线程池中的。Binder线程池是一个比较底层的概念,关于Binder的代码在native层中:../frameworks/native/libs/binder接着APP进程的启动(见:APP进程启动流程),在Zy

2.3k
Maven离线依赖库
开源

Maven离线依赖库

Maven离线依赖库AndroidStudio使用Gradle构建项目,但是最近Gradle频繁出现下载依赖失败,各种404/403网络异常,即便使用国内阿里的镜像仓库也无济于事(参考依赖库下载慢的解决办法)。这几天不知道什么情况,突然project编译不了,gradle一直显示在download,等了很长时间之后最后还是失败。解决问题三件法宝都用上了:重启、卸载重装、清除缓存。不就是网络不能访问

2.1k
Android

APP进程启动流程

APP进程启动流程当用户点击桌面上的APP图标打开一个应用,这中间发生了什么?桌面通过Intent启动APP之后系统做了哪些?Android系统做了非常复杂的操作。从全局流程上简化来看,在上次分析的Zyoget进程的启动流程中,了解到通过AMS发送启动应用的请求,Zygote服务端接收到请求后,fork自己创建应用程序进程。1、启动APP点击桌面上的图标启动应用的时候和通过Intent启动Acti

2.6k
PopupMenu:弹出菜单
Android

PopupMenu:弹出菜单

PopupMenu:弹出菜单PopupMenu弹出菜单,在点击控件的位置附件弹出一个菜单给用户选择。根据所点View位置会自动适应调整弹出菜单的位置,比如下方空间不够,就会将菜单在View的上方弹出。1、定义Menu菜单文件可以代码定义,也可以在在src/main/res/menu/菜单文件夹下定义菜单xml文件。这里选择后者,方便。注意:菜单项必要有title标题关于<menu />标签的语法详

2.0k
Android

Launcher加载APP图标流程

Launcher加载APP图标流程前段时间看了桌面Launcher的启动流程《安卓桌面Launcher的启动》,但是还没完,桌面也是一个安卓应用且涉及到的面很广,光是桌面这个模块就需要一个团队维护开发。AOSP Launcher源码:Launcher3大牛维护的Launcher代码:fookwood/Launcher31、Launcher.onCreate()接着Launcher的启动,通过Int

2.7k
监听应用的安装、卸载及更新
Android

监听应用的安装、卸载及更新

监听应用的安装、卸载及更新Android的系统没有孤立的应用,一个完全与手机上其它应用毫无关系的应用很少(比如:计算器)。得益于Android应用生态圈的建设:阿里系的APP、头条系的APP等都会相互之间通过DeepLink、ContentProvider、Intent等进行关联互动。一旦有关联就需有变数,比如手机上安装应用A,功能依赖应用B,现在B被卸载了,A需要知道。当B被重新安装上,A需要及

1.9k
Json一键生成实体类插件:GsonFormatPlus
分享

Json一键生成实体类插件:GsonFormatPlus

Json一键生成实体类插件:GsonFormatPlus推荐一个Json解析生成Bean类的插件。开发中解析Json使用gson或者原生的JSONObject去解析数据,推荐使用gson,因为很方便且靠谱。用法见Gson解析json。但是以前用Gson需要些json数据格式对应的Java bean类,虽然不难,但是每次解析很大的数据就需要写很多,效率比较低容易出错。直到用了AndroidStudi

2.6k
Glide源码调用流程分析
开源

Glide源码调用流程分析

Glide源码调用流程分析抽空挑灯夜战Glide源码,自己平时用过很多次glide(但是项目中一般不用),非常方便(glide用法见《Glide的基本用法》)。但是只会“拿来主义”并不是一个合格的程序员,还需要“刨根问底”,知道底层的实现原理,为什么人家能够做出这样牛掰的开源库,自己也可以学习积累其中的设计原理和思想,将来说不定也能找准合适的方向写一个。Glide的用法很简单,是因为Glide的设

1.8k
git commit --amend 追加修改
Git

git commit --amend 追加修改

git commit --amend 追加修改git commit命令比较熟悉了,用来提交代码。它还有一个非常好用的选项--amend。这个命令非常好用,工作中频繁用到,最近提起就记录一下。1、--amend使用当之前的提交有一些小瑕疵需要继续修改,修改完毕之后,直接add到暂存区准备提交代码的时,这时候有两种方式:第一种是commit,将这次的修改提交。这会产生一个新的commit提交记录,明明

2.5k