移动开发

Android源码分析-全面理解Context (一)

Context在android中的作用不言而喻,当我们访问当前应用的资源时,启动一个新的Activity的时候都需要提供Context,而这个Context到底是什么呢。从字面意思是“上下文”,或者也可以叫做环境,场景等,尽管如此,还是有点抽象,从类的继承来说。Context作为一个抽象的基类,它的实现类有 直接子类有ContextImpl,ContextWrapper,MockCo

Android源码分析-全面理解Context (二)

接着上篇Android源码分析-全面理解Context (一)继续讲: Service对象中ContextImpl的创建 通过查看源码发现和Activity,Application是一致的。分析到这里,那么三者的Context有什么区别呢,有一些细节是需要注意的:Dialog的使用是需要Activity 在桌面上我们采用Application的Context无法弹出普通对话框等等。 Context

Android Studio 项目文件夹结构详解

文章目录 一、项目视图概览 1. Android 视图(简化视图) 2. Project 视图(完整物理结构) 二、核心目录详解 1. 项目根目录文件 2. app 模块目录(主模块) 2.1 `manifests/` 2.2 `java/` 2

Android-推荐一个圆形图片开源库(CircleImageView)

图片来源网络,入侵必删 在开发中,我们可能会遇到让方形的图片变成圆形图片。这篇博客分享一个可以帮我快速实现圆形图片的需求,希望能提高小伙伴们的开发效率。 CircleImageView 一个圆形图片样式库,很多项目中都可能使用这个库来做圆形图片。 引入项目 dependencies { ... implementation 'de.hdodenhof:circleima

App进程的启动过程

本次源码基于Android11分析 相关源码: /frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java /frameworks/base/services/core/java/com/android/server/am/ProcessList.java /frameworks/b

Android-推荐一个RecyclerView悬浮头部(StickyItemDecoration)

图片来源网络,入侵必删 在日常Android列表开发当中,我们可能会遇到以下的需求: 我们在滑动列表的时候,头部View置顶不可以滑动. 我刚好看到有一个开源库可以帮我们快速实现,分享出来希望能提高看文章的小伙伴的开发效率. StickyItemDecoration StickyItemDecoration有两个特性: 粘性头部是放置在RecyclerView外面的View,对比

拦截器,过滤器,监听器

过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。 拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。 监听器(Listener):当一个事件发生的时候,你希望获得这个事件发生的详细信息,而并不想干预这个事件本身的进程,这就要用到监听器。 小结 过滤器 过

2025.2.13 Android Studio下载安装配置教程(详细版)

引言         作为全球占有率超过70%的移动操作系统,Android凭借其开放源代码特性与模块化架构,构建了覆盖智能手机、可穿戴设备、车机系统及物联网终端的庞大生态系统。         本文将从系统架构、开发范式到工具链全景解析Android技术体系,并深入剖析其官方集成开发环境Android Studio的核心能力,最后附

iOS 内存管理底层分析(一)- 内存相关

相关文献: iOS 内存管理底层分析(一)- 内存相关 iOS 内存管理底层分析(二)- AutoreleasePool底层 本文掌握知识点: 1.内存的五大分区 2.内存管理方案:MRC、ARC、TaggedPointer、nonpointer_isa、SideTables、自动释放池 3.weak_table_t 弱引用表底层原理、__weak的底层原理、弱引用对象的引用计数问题 4.reta

flutter - 编写 阿里云-金融级实名认证插件

项目中有实名认证的需求,用户上传身份证反正面,进行人脸核验,后台集成的是阿里云的金融级实名认证SDK,巧合的是阿里云没有packages 需要自己造轮子。 废话不多少,直接上代码: 新建项目 ProjectType = Plugin 创建完成后,会自动为我们搭建好通信结构 编写Dart中间件 在项目下的 lib下的dart文件中定义我们的通信方法。 实名认证 需要两个方法 分别是: