Android
文章平均质量分 95
LeeDuo.
这个作者很懒,什么都没留下…
展开
-
【Android】点击短信链接唤起APP的方案实践
在很多业务场景中,需要点击短信链接跳转到App的指定页面。在Android系统中,想要实现这个功能,可以通过DeepLink或AppLink实现。 DeepLink是Android系统最基础、最普遍、最广泛的外部唤起App的方式,不受系统版本限制。 当用户点击链接时,系统会弹出弹窗让用户选择使用哪个App来处理这个链接,如下图所示: 在AndroidManifest文件中需要唤起的activity中加入intent-filter,监听对应的链接。代码如下: 注意:由于一个inte原创 2023-10-09 10:02:07 · 2810 阅读 · 1 评论 -
Android架构演进史
Android历史架构演进:MVC、MVP、MVVM、Clean、MVI。原创 2022-07-23 20:10:34 · 1407 阅读 · 2 评论 -
Android屏幕切换与生命周期的调用总结!!!
Android屏幕切换与生命周期的调用Android屏幕切换与生命周期的调用1.Activity不设置android:configChange属性1)竖屏切换到横屏2)横屏切换到竖屏2.Activity设置属性为android:configChange = "orientation"1)竖屏切换到横屏2)横屏切换到竖屏3.Activity设置属性为android:configChange = "orientation|keyboardHidden|screenSize"(API ≥ 13)或android:原创 2020-12-13 21:17:00 · 595 阅读 · 0 评论 -
Android跨进程(IPC)通信方法总结!!!
Android IPC方法总结1. Bundle2. 文件共享File3. AIDL4.Messenger5.ContentProvider6.Socket1. Bundle Bundle是Android中提供的用于携带数据通信的类,优点是简单易用,但只能传输基本类型的数据和实现了Parcelable或Serializable接口的对象,及Android中一些特殊的对象。2. 文件共享File 通过使用Jav原创 2020-12-13 20:45:58 · 432 阅读 · 0 评论 -
【Android】SharedPreferences源码分析,全网最全!
SharedPreferences源码分析一.SharedPreferences的创建:1.获取SharedPreferences对象1)getSharedPreferencesCacheLocked方法2)checkMode方法3)Android7.0引入了DirectBoot模式,即用户开机但未解锁前,应用只能访问安全区内的数据。4)Android3.0以上的系统不推荐SharedPreder...原创 2020-04-29 07:30:50 · 384 阅读 · 0 评论 -
[图解]Android源码分析——ContentProvider的启动过程
ContentProvider的启动过程ContentProvider的启动过程一.query方法调用AMSContextWrapper.java中getContentResolver方法的执行过程:ContextImpl.java中getContentResolver方法的执行过程:ContentResolver.java中query方法的执行流程:ContentRresolver.java中a...原创 2020-04-15 19:57:36 · 379 阅读 · 0 评论 -
[图解]Android源码分析——BroadcastReceiver的注册、发送和接收过程
BroadcastReceiver的注册、发送和接收过程广播的注册过程ContextWrapper.java中registerReceiver方法的执行过程:ContextImpl.java中registerReceiverInternal的执行过程:ActivityManangerService.java中registerReceiver方法的执行过程:广播的发送和接收过程一.ContextIm...原创 2020-04-13 18:01:55 · 440 阅读 · 0 评论 -
[图解]Android源码分析——Service的启动和绑定过程
Service的启动和绑定过程Service的启动过程一.ContextImpl调用AMSContextWrapper.java中startSevice方法的执行过程:ContextImpl.java中startService的执行过程:startServiceCommon方法的执行过程:二.ActivityThread启动ServiceActivityManagerService.java中st...原创 2020-04-12 20:52:55 · 431 阅读 · 0 评论 -
[图解]Android源码分析——Activity的启动过程
Activity的启动过程一.Launcher进程请求AMSLauncher.java的startActivitySafely方法的执行过程:Activity.java中startActivity方法的执行过程:startActivityForResult方法的执行过程:Instrumentation.java中execStartActivity方法的执行过程:二.AMS调用Application...原创 2020-04-11 18:52:46 · 247 阅读 · 0 评论 -
5分钟了解Android虚拟机Dalvik和ART,让手机告别卡顿!
Android虚拟机一.Dalvik虚拟机1.DVM与JVM的主要区别1)架构不同2)执行字节码不同3)DVM的预加载-共享机制2.DVM的运行时堆1)Zygote Space2)Card Table3)Heap Bitmap4)Mark Stack3.DVM的GC日志1)格式2)引起GC的原因二.ART虚拟机1.ART和DVM的区别1)DVM采用JIT编译,ART采用AOT编译。2)DVM为32...原创 2020-03-10 11:49:01 · 1538 阅读 · 0 评论 -
5分钟理解Android中的JNI原理!!!
Android中的JNI原理一.Native方法的注册1.静态注册1)静态注册的原理2)静态注册的方法3)静态注册的缺点2.动态注册1)动态注册的方法2)解析AndroidRuntime::registerNativeMethods函数二.数据类型的转换1.基本数据类型的转换2.引用数据类型的转换3.引用数据类型的继承关系三.方法签名1.JNI方法签名的格式四.解析JNIEnv五.JNI的引用类型...原创 2020-03-10 10:53:49 · 744 阅读 · 0 评论 -
深入理解ActivityManagerService,你知道的不知道的全在这里!
理解ActivityManagerService一.与ActivityMangerService相关的类1.Android7.0版本中与AMS相关的类2.Android8.0版本中与AMS相关的类二.ActivityManagerService的启动过程三.ActivityManagerService与应用程序进程的关系四.与ActivityManagerService相关的数据结构类1.Acti...原创 2020-02-29 15:54:09 · 5740 阅读 · 0 评论 -
【实习周记】微信网络组件——腾讯Mars框架的原理、编译和使用
腾讯mars框架的编译和使用腾讯Mars框架的原理、编译和使用一.Mars的编译二.Mars的使用1.初始化Mars2.通过长连接发送消息3.使用短链接发送4.接收相应请求的返回消息5.接收服务端发送的消息三.Mars的原理1.Mars工作机制2.Mars代码中对应的方法3.避免Mars的机制腾讯Mars框架的原理、编译和使用 Mars是腾讯的一款...原创 2020-01-28 21:02:02 · 6762 阅读 · 0 评论 -
安卓应用程序进程启动过程,就这么简单?
应用程序进程启动过程应用程序进程启动过程一.AMS通过调用startProcessLocked方法向Zygote进程发送请求ActivityManagerService.java中startProcessLocked方法的执行过程:Process.java中start方法的执行过程:ZygoteProcess.java中start方法的执行过程:ZygoteProcess.java中startVi...原创 2020-01-27 21:36:49 · 2400 阅读 · 0 评论 -
5分钟理解Android中的上下文!!!
Android中的上下文ContextAndroid中的上下文Context一.与Context相关的类1.ContextImpl2.ContextWrapper3.ContextThemeWrapper,Service,Application4.Activity二.Application的Context创建过程LoadedApk.java中makeApplication方法的执行过程:Instr...原创 2020-01-27 17:27:58 · 6102 阅读 · 0 评论 -
Android系统启动,用过安卓手机的都知道,你还不知道吗?
Android系统启动一.Android系统启动概述1.启动电源以及系统启动2.引导程序BootLoader3.Linux内核启动4.init进程启动5.Zygote进程启动6.SystemServer进程启动7.AMS启动Launcher进程二.Android系统启动详解1.init进程的启动过程init进程的main函数(init.cpp)执行过程:2.Zygote进程的启动过程(C层)app...原创 2020-01-22 19:09:58 · 2167 阅读 · 0 评论 -
Android初始化语言
Android初始化语言Android初始化语言一.Action1.概述2.语法格式3.trigger二.Service1.概述2.语法格式三.Option1.概述2.语法格式四.Command1.概述2.语法格式五.查看当前执行的指令Android初始化语言Android初始化语言(Android Init Language)用于编写Android进程启动脚本包括四种类型语句:Action...原创 2020-01-16 08:00:36 · 624 阅读 · 0 评论 -
【实习周记】ArrayMap源码分析
【实习周记】ArrayMap源码分析一.概述ArrayMap是Android专门针对内存优化而设计的,用于取代Java API中的HashMap数据结构。内部通过两个数组实现,存储结构如下二....原创 2019-09-24 15:48:18 · 451 阅读 · 1 评论 -
【实习周记】SparseArray源码分析
【实习周记】SparseArray源码分析一.概述SparseArray是Android中的容器,适用于Android这种对内存非常敏感的移动平台,用来存储键值对,适用于数据量不大,key必须为int类型的情况。SparseArray内部通过两个数组实现。一个int类型的数组,用来存key。一个object类型的数组,用来存value。二.主要方法的源码分析1.重要字段(1).priv...原创 2019-09-24 15:15:01 · 246 阅读 · 0 评论 -
【实习周记】Android中ProtoBuf的使用与序列化原理
【实习周记】Android中ProtoBuf的使用与序列化原理一.概述protobuf(Protocol Buffer)是Google推出的一种与语言无关、平台无关、可扩展的序列化结构数据的方法。在兼容性和传输效率上优于Json和Xml。二.在Android中使用protobuf1.在项目中接入protobuf(1).在项目根目录的build.gradle中添加依赖: depe...原创 2019-09-24 14:38:50 · 635 阅读 · 0 评论 -
【实习周记】Android getevent.c源码分析
【实习周记】Android getevent.c源码分析一.概述getevent和sendevent是Android系统下的两个工具在cmd 命令行下输入adb shell进入Android设备的shell输入getevent ,获取当前设备的事件输入sendevent ,模拟设备产生事件这两个命令的源码在Android系统system/core/toolbox/目录下,名字分别为g...原创 2019-07-27 19:52:04 · 2405 阅读 · 0 评论 -
[图解]Android View的事件分发机制
[图解]Android View的事件分发机制图中箭头蓝色代表事件向下传递的方向橙色代表事件回传的方向绿色代表事件的处理方向黄色代表类的关系连线代表同一个对象点击事件的产生和事件序列分析最普通最常用的一种情况,用户点击手机屏幕,会产生一个ACTION_DOWN事件,代表屏幕被摁下。同时,若手指移动,则会产生ACTION_MOVE事件,代表手指移动。最后,用户手指离开屏幕,产生ACT...原创 2019-05-10 18:52:28 · 243 阅读 · 0 评论