自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android 开发架构

热爱技术,热爱分享,加油,孤独的编程人

  • 博客(21)
  • 收藏
  • 关注

原创 Android MediaCodec 硬编码 H264 文件

在 Android 4.1 版本提供了 MediaCodec 接口来访问设备的编解码器,不同于 FFmpeg 的软件编解码,它采用的是硬件编解码能力,因此在速度上会比软解更具有优势,但是由于 Android 的碎片化问题,机型众多,版本各异,导致 MediaCodec 在机型兼容性上需要花精力去适配,并且编解码流程不可控,全交由厂商的底层硬件去实现,最终得到的视频质量不一定很理想。虽然 Medi...

2019-11-29 20:29:33 367

原创 Android项目重构实践:从 Fresco 到 Glide 低成本重构方案

Fresco 是一个入侵性很重的框架,如果使用 Fresco 我们的ImageView都要替换为 SimpleDraweeView,如果使用自定义ImageView,就非常麻烦。虽然 SimpleDraweeView 提供了非常丰富的功能,比如圆角,边框等,但有时候会出现非常奇怪的布局异常。在5.0版本以前 Fresco 可以有效降低 OOM,但是现在已经没有优势了,所以项目计划从 Fresco...

2019-11-28 22:03:56 224

原创 Android城市索引含定位和热门城市(悬浮块+右侧字母索引)

一、首先我们想要的效果是:在城市索引的列表能够加个自定义头部;有城市索引的字母悬浮块;右侧的字母索引导航;仿ios效果的当前位置索引提示框我们先来看下效果:下面的代码可能有点多,但是效果却很不错,请耐心往下看 这里我是用的IndexableLayout控件做的如果还是有不清楚的,可以去看我的Demo:https://github.com/MirZou/CityProject博...

2019-11-27 20:44:48 1204

原创 “这个需求很简单,怎么实现我不管” | Android 代码优化篇

1背景before:在我们APP启动过程,我们可能常常有这样的需求:在APP第一次进入的时候根据网络请求的结果弹一个对话框式的广告, ok~ 很简单,那么代码大致就是这样(这边都是伪代码,为了方便理解): @Override protected void onCreate(@Nullable Bundle savedInstanceState) { checkFirs...

2019-11-26 17:06:51 1001

原创 面试官:你们前后端分离的接口规范是什么?

1. 前言随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端研发各自专注于自己擅长的领域深耕细作。然而带来的另一个问题:前后端的对接界面双方却关注甚少,没有任何接口约定规范情况下各自干各自的,导致我们在产品项目开发过程中,前后端的接口联调对接工作量占比在30%-50%左右,甚至会...

2019-11-25 15:54:30 404

原创 缓存要有道,一看就会的LruCache缓存机制

/   前言   /LruCache是我们经常使用的缓存机制,也叫**“最近最少使用的”缓存策略。其本质原理是通过历史访问记录来倒序淘汰数据**,它认为刚刚访问的数据,将来被访问的可能性较大,因此将该类数据维护到相对安全的区域,防止被淘汰。此时如果超过设定的内存瓶颈,将优先淘汰最老的数据。比如你在玩一款游戏,游戏里有一个仓库,有20个位置可以存放装备。...

2019-11-22 21:13:23 197

原创 Kotlin 在Android开发中那些让人舒适的地方

0前言阿里P6P7【安卓】进阶资料分享+加薪跳槽必备面试题目前公司的项目已经全面使用Kotlin,转换的过程的确不是怎么让人舒适,但是让人欣慰的是结局是让人满意的。Kotlin的确可以让代码简洁,安全并且高效。这里分享一下,在使用Kotlin中那些让人觉得舒适的地方。字符模板空安全延迟加载方便易读的循环强大易用的迭代器默认参数DataClass简短而强大的标准函数库通吃的w...

2019-11-21 15:25:59 183

原创 9102年了,再谈屏幕适配!

1前言众所周知,Android授权的厂商不计其数,生产出的机型也数不胜数,导致尺寸碎片化很严重。当然,都9102年了,大家逐渐得到了最优解,国内主流机型基本上都在720、1080、1440徘徊,最多高度上各有所长,但是还是保留着不少其他分辨率的手机,先来看一组数据(来源:友盟)——阿里P6P7【安卓】进阶资料分享+加薪跳槽必备面试题如图所证上述结论的正确性,但是可以看到,每年都有比例不小...

2019-11-20 21:25:15 323

原创 你知道 Java 类是如何被加载的吗?

前言阿里P6P7【安卓】进阶资料分享+加薪跳槽必备面试题最近给一个非 Java 方向的朋友讲了下双亲委派模型,朋友让我写篇文章深度研究下JVM 的 ClassLoader,我确实也好久没写 JVM 相关的文章了,有点手痒痒,涂了皮炎平也抑制不住的那种。我在向朋友解释的时候是这么说的:双亲委派模型中,ClassLoader 在加载类的时候,会先交由它的父 ClassLoader 加载,只有当父...

2019-11-19 21:12:02 145

原创 一篇文章了解相见恨晚的 Android Binder 进程间通讯

概述最近在学习 Binder 机制,在网上查阅了大量的资料,也看了老罗的 Binder 系列的博客和 Innost 的深入理解 Binder 系列的博客,都是从底层开始讲的,全是 C 代码,虽然之前学过 C 和 C++,然而各种函数之间花式跳转,看的我都怀疑人生。毫不夸张的讲每看一遍都是新的内容,跟没看过一样。后来又看到了 Gityuan 的博客看到了一些图解仿佛发现了新大陆。2019秋招必备...

2019-11-15 20:30:43 166

原创 构建永不停止运行的Android服务

这些天我一直在努力寻找在Android中运行永不停止服务的方法。这只是追求同一目标的指南。希望能帮助到你!2019秋招必备面试题汇总+阿里P6P7安卓进阶资料分享问题由于Android 8.0(API级别26)中引入了Android电池优化,后台服务现在有一些重要的限制。基本上,一旦应用程序处于后台运行一段时间,它们就会被杀死,这使得它们对于运行永不停止运行的服务毫无价值。根据Androi...

2019-11-15 20:10:00 252

原创 找出卡顿的元凶 —— 渲染性能优化

一个 Android 应用是否流畅,或者说是否存在卡顿、丢帧现象,都与 60fps 和 16ms 有关。那么这两个值是怎么来的呢?为什么以这两个值为衡量标准呢?本文主要讨论下渲染性能方面决定 Android 应用流畅性的因素。2019秋招必备面试题汇总+阿里P6P7安卓进阶资料分享为什么是 60fps?12fps(帧/秒)由于人类眼睛的特殊生理结构,如果所看画面之帧率高于每秒约 10 ...

2019-11-14 17:35:58 2628 1

原创 Android 生成桌面快捷方式是这样做的

关于生成桌面快捷方式,Android提供了原生的api方法。下边就介绍一下兼容8.0的具体做法。2019秋招必备面试题汇总+阿里P6P7安卓进阶资料分享一、首先当然是关于快捷方式的权限了。我们需要在AndroidManifest文件中添加一下权限: <uses-permission android:name="com.android.launcher.permission.WR...

2019-11-12 20:37:52 237

原创 Kotlin协程它不香吗?

本博客的目的:知道Kotlin协程是什么,为什么要用Kotlin协程快速上手Kotlin协程抓住核心,避免被误导Kotlin协程是什么Kotlin的协程简单说就是线程的框架,详细点说它就是一套基于线程而实现的一套更上层的工具API协程这个术语早在 1958 年就被发明并用于构建汇编程序,说明协程是一种编程思想,并不局限于特定的语言。比如Go 语言也有协程,叫 Goroutines...

2019-11-11 16:45:51 832 1

原创 为什么阿里巴巴要禁用Executors创建线程池?

写在前面2019秋招必备面试题汇总+阿里P6P7安卓进阶资料分享首先感谢大家在盖楼的间隙阅读本篇文章,通过阅读本篇文章你将了解到:线程池的定义Executors创建线程池的几种方式ThreadPoolExecutor对象线程池执行任务逻辑和线程池参数的关系Executors创建返回ThreadPoolExecutor对象OOM异常测试如何定义线程池参...

2019-11-11 16:23:32 231

原创 阿里巴巴: 给你一个Demo 你如何快速定位ANR

一、前期基础知识储备2019秋招必备面试题汇总+阿里P6P7安卓进阶资料分享1.ANR错误定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作“应用程序无响应”(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。因此,在程序里对响应性能的设计很重要,这样,系...

2019-11-08 20:50:28 207

原创 给TextView文本加标签,小功能大秘密

/   需求   /2019秋招必备面试题汇总+阿里P6P7安卓进阶资料分享开发过程中我们经常会遇到文字尾部添加标签的需求,看是很简单,其实蛮难做的。比如我们的设计稿如下:打眼一看,一个水平方向线性布局就解决了,内部写两个TextView就行。<LinearLayout    android:layou...

2019-11-07 17:41:19 321

原创 Android Studio说:使用HashMap不如使用SparseArray?

/ 前言 /使用Android Studio作为IDE的开发者可能会遇到一个现象,就是在代码中如果声明了Map<Integer, Object>类型的变量的话,Android Studio会提示:Use new SparseArray(…) instead for better performance …,意思就是用SparseArray性能更优,可以用来替代HashMap。...

2019-11-06 20:53:09 289

原创 不容错过, Code Review 的最佳实践方案来了

前言2019秋招必备面试题汇总+阿里P6P7安卓进阶资料分享我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,Code Review都是基本要求,代码合并之前必须要有人审查通过才行。然而对于我观察到的大部分软件开发团队来说,认真做Code Review的很少,有的流于形式,有的可能...

2019-11-05 21:18:40 260

原创 读Java虚拟机类加载引发的血案

00 前言2019秋招必备面试题汇总+阿里P6P7安卓进阶资料分享最近在看 Java 虚拟机类加载的知识点,结果让我发现了自己一个曾经一直纠结,又没彻底弄懂的类加载黑洞,从而引发下面一系列的测试血案。相信面试过的你们也会见过类似下面测试的这几道题。不过,答案你真的理解了么?话不多说,直接 GKD。可惜我不是大佬,所以…哈哈哈 GKD 吧!下面就是测试过程种发现的一些疑惑点,赶紧记录一波…0...

2019-11-05 21:03:21 104

原创 谷歌强推 AndroidX ,你还在应Support?

前言AndroidX 是 Google 2018 IO 大会推出的新扩展库,主要是对 Android支持库做了重大改进。与支持库一样,AndroidX 与 Android 操作系统分开提供,并与各个 Android 版本向后兼容,可以说 AndroidX 就是为了替换 Android 支持库而设计的。1. AndroidX 是什么?AndroidX 是 Android 团队用于在Jetpa...

2019-11-04 19:49:32 645 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除