分类

Android

深入探讨 Android 系统的核心架构与高级开发,聚焦四大组件(Activity、Service、Broadcast Receiver、Content Provider)的原理、生命周期管理和交互机制。从基础的组件构建与通信,到 Android Framework 层(如 AMS、WMS、PMS)的源码剖析和自定义扩展,提供详尽代码示例、调试技巧和性能优化策略。涵盖 JNI、AIDL、Binde

共 356 篇文章

Android

​Android AIDL 进阶:Service 权限配置与 RemoteCallbackList

Android AIDL 进阶:Service 权限配置与 RemoteCallbackListAIDL 让跨进程通信变得简单——定义接口、实现 Stub、bindService 一气呵成。但只要你的 Service 对外暴露,任何应用都能 bind 它、调用它的方法,安全隐患随之而来。本文讲清两个 AIDL 进阶主题:如何给 Service 加权限验证(声明式 + 编程式两种),以及如何用 Re

206
Android

Android源码在线阅读

Android源码在线阅读阅读源码学习Android源码的精髓,了解底层实现原理。下载源码到本地阅读,参考Android源码镜像下载 。在线阅读源码很方便,而且格式友好。1、在线源码 http://androidxref.com/ http://aospxref.com/ Android社区 OS在线源码 (域名已被专卖) https://github.com/aosp-mirror2、Andro

5.6k
Messenger:轻量级的IPC
Android

Messenger:轻量级的IPC

Messenger1、MessengerMessenger在不同进程中传递Message对象,在Message中放入我们需要传递的信息,然后通过Messenger将Message传递给对方,就可以轻轻松松实现跨进程数据传递。Messenger是轻量级的IPC(跨进程通信)方式,底层是AIDL实现。 “Reference to a Handler, which others can use to s

1.8k
Android获取设置 语言、地区
Android

Android获取设置 语言、地区

通过android.content.res.Configuration 类,可以修改语言参数,实现对应用语言的变更:得到配置Configuration之后,可以得到Locale对象,包含本地的一些信息:注意,Android N之后这个Configuration类的locale成员变量被标记为deprecate,不推荐再使用:Android N之后应当使用getLocales()方法,注意,如果在低

3.2k
Android

Android 开发获取各种ID信息 获取线程ID、activityID、内核ID

各种id信息 获取线程ID、activityID、内核ID开发调试过程中需要打印Log,有时候需要分析一些数据,当前进程ID、主线程ID等。1、此进程的用户的标识符2、此进程的标识符3、调用线程的标识符4、当前线程的ID5、主线程的ID6、前应用的主线程id7、Activity任务栈的id8、该应用程序的内核用户ID9、应用程序应运行的进程的名称10、当前activity的信息

1.9k
Android

IntentFilter匹配

IntentFilter匹配通过Intent隐式启动Activity通过IntentFilter匹配合适的Activity进行启动。参考《启动Activity的几种方式》。其中主要通过action、category、data进行匹配,在Intent源码中可以查看到三个私有成员变量的定义:1、actionIntent必须且只能设置一个action。从源码可以看到,action定义为String类型的

1.8k
Android

Activity启动的Flag

Activity启动的FlagActivity有4中启动模式,参考Activity四种启动模式 。启动Activity的Intent添加flag,使用 Intent.addFlags(int flags) 方法。查看源码,可以看到总共有20种:后面简单介绍Intent几个常用的Flag。 1、FLAG_ACTIVITY_CLEAR_TOP这个Flag有没有很熟悉。SingleTask启动模式自带该

1.7k
Android重复点击
Android

Android重复点击

Android重复点击只要手速够快,就能突破限制。以前版本的微信有没有发现过,打开朋友圈,点击速度够快的话会打开两个朋友圈Activity,返回需要返回两次。我猜朋友圈Activity的launchMode肯定不是SingleTop和SingleInstance模式。关于Activity启动模式参考《Activity四种启动模式》。1、重复创建Activity问题如果点击一个View,启动Acti

1.7k
WebView报错: Error inflating class android.webkit.WebView
Android

WebView报错: Error inflating class android.webkit.WebView

WebView报错: Error inflating class android.webkit.WebView正常在布局中添加了一个WebView控件。关于WebView的使用参考《WebView简单入门》一文。运行的时候竟然奔溃,报错:... ...Error inflating class android.webkit.WebView查看Google 官方文档,有下面一句说明: ”当 Enab

2.2k
Android TabLayout标题
Android

Android TabLayout标题

Android TabLayout标题Tab标题也是Android应用中常见的UI,比如今日头条新闻页面上的切换Tab。Tab切换控制通常是个ViewPager一起使用,通过点击Tab页面不同的标签,控制ViewPager显示不同的页面。1、PagerTabStrip(不推荐)结合PagerTabStrip,可以添加标题,只需要在ViewPager布局内嵌套PagerTabStrip即可,不需要设

1.9k
Android对话框:Dialog
Android

Android对话框:Dialog

Android对话框:Dialog对话框在Android开发中使用频率很高,各种弹框及数据选择输入,比如:时间选择器:DatePicker和TimePicker默认的Dialog什么也没有,一般使用它的派生类AlertDialog,或者MaterialDialog。1、AlertDialogAlertDialog比较常用,通过AlertDialog.Builder创建AlertDialog对话框并

2.2k
Fragment碎片用法
Android

Fragment碎片用法

开发者>文档>指南>Fragment">Fragment碎片用法Fragment是一种可以嵌入在活动中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间,出现的初衷是为了适应大屏幕的平板电脑,可以将其看成一个小型Activity,又称作Activity片段。Fragment依赖于Activity,不能独立存在一个Activity可以有多个Fragment一个Fragment可以被多个Activ

2.2k
ConstraintLayout 构建自适应界面
Android

ConstraintLayout 构建自适应界面

ConstraintLayout 从Android API 9以后Google推出了ConstraintLayout,而且从Android Studio 2.3 起,默认布局就是ConstraintLayout。 1、ConstraintLayout主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。RelativeLayout 也可以解决多层嵌套问题,但是ConstraintLayo

2.6k
屏幕方向属性:android:screenOrientation
Android

屏幕方向属性:android:screenOrientation

android:screenOrientation属性1、屏幕方向属性:screenOrientationAndroid应用程序中,android:screenOrientation用于控制activity启动时方向。 1.1、屏幕方向属性 屏幕方向android:screenOrientation取值可以为以下几种:unspecified 默认值,由系统决定,不同手机可能不一致landscape

2.2k 1
Android

Android屏幕适配

屏幕适配1、布局适配 Android 设备的形状和尺寸多种多样,因此应用的布局需要十分灵活。也就是说,布局应该从容应对不同的屏幕尺寸和方向,而不是为布局定义刚性尺寸,假定屏幕尺寸和宽高比是一定的。1.1、ConstraintLayout 要创建适用于不同屏幕尺寸的自适应布局,最佳做法就是将 ConstraintLayout 用作界面中的基本布局。使用 ConstraintLayout,您可以根据布

1.7k