Android 的架构依次有:
- MVC
- MVP
- MVVM
- MVI
- Clean Architecture
上述架构循序渐进,当前主流设计模式是 MVVM,MVI 和 Clean Architecture,这三者的着重点各有不同,可以根据项目规模大小递进选择。
Android 的架构依次有:
上述架构循序渐进,当前主流设计模式是 MVVM,MVI 和 Clean Architecture,这三者的着重点各有不同,可以根据项目规模大小递进选择。
当 APP 目标版本是 Android 10(API 29)及以后时,由于 Android 引入了分区存储,APP 不能直接通过路径访问文件,访问外部存储空间中的媒体文件除了需要READ_EXTERNAL_STORAGE
或 WRITE_EXTERNAL_STORAGE
权限之外,需要通过其他 APP 分享的Uri
读写文件,同理要给其余 APP 分享文件也许要通过FileProvider
生成Uri
并赋予对应的权限。
本文以从相册中获取图片、请求系统裁剪并返回图片为例展示对应的适配方法。
最近在项目里面遇到了屏幕适配的问题,UI 要求 APP 在不同手机上展示效果和设计稿保持“像素级”同步,在对比了几种屏幕适配方案之后,选择了基于今日头条的AndroidAutoSize适配方案。
本文主要简单分析其适配原理,以及在实际使用中遇到的一个问题,需要更深入了解原理可以阅读文末参考文献。
UI 给的设计稿一般都是以像素 px 为单位,而在 Android 开发中官方推荐的使用的单位是 dp。
Xfermode
是 Android 中用来指示Paint
绘制的内容与 View 中已有内容的混合计算方式,也就是用来确定图形绘制到目标图形的时候,如何处理两个图形重合部分的颜色变化。共 18 个,分为 Alpha 合成和混合两种。
设要绘制的图形为src
,已经绘制好的图形为dst
。
需要注意的是,这些图片除了要绘制的图形有着色之外,其他部分要为透明,并且包括透明区域在内的图片大小(宽高)要能完全覆盖另外一张图片的图形区域,否则绘制出的图形可能与预设的效果不一致
贝塞尔曲线是用节点和控制点绘制的高精度曲线,Android 中常用的有二阶、三阶贝塞尔曲线。本文介绍使用贝塞尔曲线绘制折线图,并实现动画效果。
Android 中的跨进程通信 IPC 主要有以下几种方式:
Linux 已经提供了管道、消息队列、共享内存和 Socket 等 IPC 机制
进程是资源分配的基本单位,线程是调度的基本单位。
以下内容来自:
作者:SylvanasSun
链接:https://juejin.im/post/59f8691b51882534af254317
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
日常开发中,常用的存储键值对的数据结构是HashMap
,根据Java 笔记之 HashMap 保存数据和Java 笔记之计算 Java 对象的大小及其应用可以知道,HashMap
存储键值对会占用比较多的内存控件,而对于内存限制较大的 Android 平台来说,为了避免这种浪费,官方推荐我们使用SpareArray
和ArrayMap
,本文对这两个类的实现进行分析比较。
当 APP 的 minSdkVersion 低于 Android 5 时,在方法数大于 65536 时,需要将 APP 打包为多个 DEX 文件,此时需要添加 MultiDex 依赖。
官方方法如下:
1.build.gradle
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 28
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.3'
}
Messenger 是 Android 中用于 IPC 的方式之一,使用 Handler 发送有序消息队列,底层是通过 AIDL 调用 Binder 实现。
Messenger 只用于服务端和客户端串行的传递消息,如果大量并发或者跨进程调用服务端的方法,就需要考虑 AIDL 而非 Messenger。
Messenger 的使用可以参考这篇文章,本文主要探索一下 Messenger 源码实现。
本文是对张鸿洋的 OKHttp 辅助类okhttputils简要分析,以便学习如何封装常见工具的思想,建议配合源码食用。
主要涉及类: