分类
Android
深入探讨 Android 系统的核心架构与高级开发,聚焦四大组件(Activity、Service、Broadcast Receiver、Content Provider)的原理、生命周期管理和交互机制。从基础的组件构建与通信,到 Android Framework 层(如 AMS、WMS、PMS)的源码剖析和自定义扩展,提供详尽代码示例、调试技巧和性能优化策略。涵盖 JNI、AIDL、Binde
共 356 篇文章
如何获取全局Context?
如何获取全局Context?开发过程中经常会用到Context,但是如果不在Activity或者Service,比如在Presenter层有时就无法获取到Context,非常棘手。有办法!定义全局应用唯一的一个静态Application Context,虽然是静态的,但是生命周期和应用一样,不存在内存泄漏。1、自定义Application定义静态的Context变量,重写onCreate()方法,

各种Context及其初始化流程
各种Context及其初始化流程Context在Android开发中实在是太重要的,用到的地方数不胜数。开发过程中没有Context是万万不能的,给人感觉Context简直是“万能”的。因为总有一些地方会用到Context,可以通过传参的方式传入;但是有些又没法通过传参传入,这时候可以使用全局ApplicationContext的方式获取到一个Context(见《如何获取全局Context?》)。
Binder线程池的启动
Binder线程池的启动Binder线程池在Android是一个非常重要的技术,访问其它应用ContentProvider的,应用进程和系统服务之间的通信等操作在服务端是运行在Binder线程池中的。Binder线程池是一个比较底层的概念,关于Binder的代码在native层中:../frameworks/native/libs/binder接着APP进程的启动(见:APP进程启动流程),在Zy

PopupMenu:弹出菜单
PopupMenu:弹出菜单PopupMenu弹出菜单,在点击控件的位置附件弹出一个菜单给用户选择。根据所点View位置会自动适应调整弹出菜单的位置,比如下方空间不够,就会将菜单在View的上方弹出。1、定义Menu菜单文件可以代码定义,也可以在在src/main/res/menu/菜单文件夹下定义菜单xml文件。这里选择后者,方便。注意:菜单项必要有title标题关于<menu />标签的语法详
Launcher加载APP图标流程
Launcher加载APP图标流程前段时间看了桌面Launcher的启动流程《安卓桌面Launcher的启动》,但是还没完,桌面也是一个安卓应用且涉及到的面很广,光是桌面这个模块就需要一个团队维护开发。AOSP Launcher源码:Launcher3大牛维护的Launcher代码:fookwood/Launcher31、Launcher.onCreate()接着Launcher的启动,通过Int

监听应用的安装、卸载及更新
监听应用的安装、卸载及更新Android的系统没有孤立的应用,一个完全与手机上其它应用毫无关系的应用很少(比如:计算器)。得益于Android应用生态圈的建设:阿里系的APP、头条系的APP等都会相互之间通过DeepLink、ContentProvider、Intent等进行关联互动。一旦有关联就需有变数,比如手机上安装应用A,功能依赖应用B,现在B被卸载了,A需要知道。当B被重新安装上,A需要及
Android桌面Launcher3的启动
Android桌面Launcher3的启动SystemServer启动会在startBootstrapServices()方法中启动引导带服务,其中就包括PackageManagerService(这里判断了手机是否是工厂模式)。而包管理服务和接下来要分析的Launcher启动有很大关系。SystemServer启动流程参考《SystemServer系统服务启动》。startOtherServic
Android 获取内存信息全攻略:堆内存、系统内存与进程内存
Android 获取内存信息全攻略:堆内存、系统内存与进程内存内存优化始终是 Android 性能工程的重头戏,而"优化"的前提是"量得到"。但不少同学照着网上的代码一抄,发现拿到的内存值要么只涨不跌、与 Android Studio Profiler 对不上,要么数字大得离谱——根源在于 Android 的"内存"有好几套口径:Java 堆、系统可用内存、进程 PSS、设备物理内存,各自 API

FloatingActionButton:悬浮按钮
FloatingActionButton:悬浮按钮FloatingActionButton(悬浮按钮)从Android 5.0之后随着Material Design加入Android控件家族。其实就是ImageView,继承关系如下: java.lang.Object ↳ android.view.View ↳ android.widget.ImageView ↳ android.widget.I
Android TextInputLayout 详解
Android TextInputLayout 详解1、TextInputLayout 概述TextInputLayout 是 Android Material Design 组件库中的重要控件,它继承自 LinearLayout,用于包装 EditText(或其子类如 TextInputEditText),提供更加丰富的输入体验。TextInputLayout 能够实现浮动标签、错误提示、字符计

Spinner:下拉选择
Spinner:下拉选择简单介绍一个Android中的下拉选择控件:Spinner,别看它小巧,用处靠发挥开发者的创造力,比如搜索输入框中不断更新的提示词可以用Spinner。源码路径:frameworks/base/core/java/android/widget/Spinner.java1、Spinner在布局中添加Spinner2、Spinner数据下拉选择得有选项,这些数据有多种方式添加到

