自定义博客皮肤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 开发架构

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

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

原创 深入分析Kotlin的属性代理机制

前言熟悉Kotlin的人可能知道,类代理是一种基于父类或者接口的实现,而在代理属性这边没有这种限制,而且这些代理对象的公共方法的参数中还包含了委托对象,这意味着在代理对象中也可以调用委托对象的公共方法。Kotlin的标准库中就包含了许多使用代理属性的实现,比如lazy。免费获取更多安卓开发架构的资料(包括Fultter、高级UI、性能优化、架构师课程、 NDK、Kotlin、混合式开发(Rea...

2019-04-30 21:49:21 195

原创 使用Android 模仿微信朋友圈图片拖拽返回

1概述目前的app的动画效果是越来越炫了,很多主流app的图片预览返回都有类似功能,比较常见的是ios自带相册,微信朋友圈等等。自己项目中也有类似功能,最近整理了一下这个功能的代码,做个笔记记录,有兴趣的朋友可以点击源码。https://github.com/bauer-bao/DragCloseHelper网上已经有对应功能的三方库了,MyDragPhotoView 和 DragPhot...

2019-04-30 20:48:01 1105

原创 Flutter豆瓣客户端(仿),诚心开源

原作者:徐爱卿终于,终于写完了。这个项目是我从年前开始写的,然后今年过年没有回家,除了大年三十没有提交代码,有空余时间就一直在写,过完年大年初一就开始写了~~。功夫不负有心人,终于,现在来看是一个成熟度较为满意的作品,才敢拿出来跟大家一起分享。效果图凑合看吧…gif控制大小太难了…原文效果图更多,更真实,文末有apk下载。缘起忘记关注哪个公众号了,真正接触flutter是18年...

2019-04-29 15:58:14 435

原创 5G到来,App的未来,是JavaScript,Flutter还是Native ?

Native App传统的原生APP开发模式,有IOS和AOS两大系统,需要各自语言开发各自APP。目前也有很多跨平台应用使用React Native。它也是跟Flutter对比的主要对象。优点:其优点是目前的生态相对比较成熟缺点:开发和发布成本高举个栗子:网易管家APP (Tab1,Tab2)应用技术:Swift,OC,JAVAWebApp常被人提起的H5技术,其实就...

2019-04-29 15:41:48 352

原创 滴滴 App 质量优化黑科技,为了稳定都做了什么?

一. 序当 App 达到一定体量的时候,肯定是要考虑质量优化。有些小问题,看似只有 0.01% 触发率,但是如果发生在 DAU 过千万的产品中,就不是小问题了。滴滴这个独角兽的 DAU 早已过千万,自然有一些独到的优化方案。最近滴滴在 Github 上开源了一个 Android App 的质量优化工具Booster,通过动态发现和加载机制,提供了可扩展的能力。等于是一款移动应用的质量优化框架...

2019-04-28 20:24:11 772

原创 面试官问我“Java中的锁有哪些?以及区别”,我跪了

前言在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/非公平锁公平锁是指多个线...

2019-04-27 20:45:00 105

原创 你经常遇到的Android 日常开发问题总结

日常开发中碰到了各种开发问题,捡选了一部分分享出来。有些问题非常简单,属于编码规范类,有些属于特定情况下碰到的问题,不是很常见。不太准确的地方,欢迎共同探讨下~1.requestFeature() must be called before adding contentrequestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题需要在...

2019-04-26 21:45:02 1339

原创 (Android)单元测试---重构的前提

前言终于着手写单元测试系列文章,这也将是我着手写系列文章的第一篇。之所以决定用单元测试作为系列文章第一篇,是因为最近才捡起来写文章的习惯,并且现在公司也开始重视起了单元测试,了解一番后发现单元测试真是个好东西,随着时间积累下来更是会方便你我他,重构代码不担心,新人接手也可以借助单元测试了解逻辑。那么为什么直到今天,编写单元测试仍然没有那么普及呢?我认为主要的原因就是决策的人大部分都不是程序...

2019-04-26 20:44:49 167

原创 你真的了解线程的并发吗?

9:10约会,真爱,请“星标”1 、对线程与线程线程是什么?是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。线程有就绪、阻塞和运行三种基本状态**多线程:**指的是这个程序(一个进程)运行时产生了不...

2019-04-25 21:02:34 354

原创 聊聊真实的 Android TV 开发技术栈

智能电视越来越普及了,华为说四月发布智能电视跳票了,一加也说今后要布局智能电视,在智能电视方向,小米已经算是先驱了。但是还有不少开发把智能电视简单的理解成手机屏幕的放大,其实这两者并不一样。一、序你慢慢会发现,身边所有的电视都变成了智能电视。这是很容易接受的事实,智能电视更便宜。价格是不容忽视的敏感点,顾客会天然的选择物美价廉的智能电视。这看似不符合逻辑,为什么选择落后的技术,不允许联网的传...

2019-04-24 16:21:58 4280 2

原创 安卓应用无响应,你真的了解吗?

引言不论从事安卓应用开发,还是安卓系统研发,应该都遇到应用无响应(简称ANR)问题,当应用程序一段时间无法及时响应,则会弹出ANR对话框,让用户选择继续等待,还是强制关闭。绝大多数人对ANR的了解仅停留在主线程耗时或CPU繁忙会导致ANR。面试过无数的候选人,几乎没有人能真正从系统级去梳理清晰ANR的来龙去脉,比如有哪些路径会引发ANR? 有没有可能主线程不耗时也出现ANR?如何更好的调试AN...

2019-04-24 16:03:27 402

原创 【源码分析】Lottie 实现炫酷动画背后的原理

说具体点就是 lottie 随属性动画修改 progress,每一个 Layer 根据当前的 progress 绘制所对应的帧内容,progress 值变为1,动画结束。(有点类似于帧动画)当然说说简单,lottie其实做了非常多的工作,后续将详细解析 lottie-android 的实现原理。3. Lottie 关键类介绍Lottie 提供了一个 LottieAnimationView 给...

2019-04-23 15:30:55 568

原创 互联网又出大瓜,知乎1000w热议,B站后台代码被开源至Github?

最近,程序员这个圈子可谓热闹非凡,前不久,一个神奇的开源项目996.ICU诞生,几天时间就有超过10w+ star 和 1w+ fork,可谓是Github上star增长最快的项目。996.icu将程序员996的严重加班情况带到了大众面前,马云、刘强东等互联网大佬也因为996发声被推到了舆论浪尖。这事儿才消停几天,互联网圈又出现大瓜,今天下午,一个开源库go-common的开源库又引起了瓜友们...

2019-04-23 15:15:07 908

原创 Android 版本适配:9.0 Pie(API 级别 28)

一、前言本文主要是从官方文档中筛选出一些常见的适配项,若有任何纰漏或需要补充的,欢迎大家在评论区指出。二、版本适配1. 限制 HTTP 网络请求Android 9.0 中限制了 HTTP(明文传输)网络请求,若仍继续使用HTTP请求,则会在日志中提示以下异常(只是无法正常发出请求,不会导致应用崩溃):java.net.UnknownServiceException: CLEARTEXT...

2019-04-22 16:08:38 1035

原创 使用React Native构建App

最近因为项目需要,深入研究React和React Native,React已经掌握得差不多了,现在集中精力在ReactNative的项目开发。这里需要记录在学习过程中的技术细节,好记性真的不如烂笔头,多写文档总会有好处的。本文重点记录使用React Native构建双平台App的过程,同时进一步掌握构建过程中运用的技术。搭建开发环境安装react-native-cli:npm i -g re...

2019-04-22 15:15:46 318

原创 面试必问的HashMap,你真的了解吗?

前言HashMap是Map中最为常用的一种,面试中也经常会被问到相关的问题。由于HashMap数据结构较为复杂,回答相关问题的时候往往不尽人意,尤其是在JDK1.8之后,又引入了红黑树结构,其数据结构变的更加复杂,本文就JDK1.8源码为例,对HashMap进行分析;源码分析1.1 老规矩,先上构造方法public HashMap(int initialCapacity, float lo...

2019-04-19 17:07:35 340

原创 Android自定义控件-可拖动控制的圆环控制条

前几天收到这么一个需求,本来以为挺简单的,没想到最后发现实现起来还是有点小麻烦的,在这里小小的总结一下。先看看下面这张需求的样图:然后在看一下最终实现的效果图,可能是gif录制软件的问题,有一些浮影,忽略就好了:首先要分析一下最核心的地方,如何获取到滑动距离对应的弧长,看图:p1是手指按下的点,很明显要想知道当前进度弧边的值,就是要求出角d的值。以p为圆心点,atan(b)=Mat...

2019-04-19 16:02:05 649

原创 你要的进阶,Jetpack核心组件Lifecycle的使用和源码解析

使用LifecycleLifecycle是Android Architecture Components的一员,这玩意儿挺方便的,它是能感知Activity和Fragment的生命周期的。引入Lifecycle我们来看一下如何引入。非androidX项目引入 //运行时 implementation "android.arch.lifecycle:runtime:1.1...

2019-04-18 20:42:39 163

原创 面试常客:Intent 能传递多大 Size 的数据?| 付阿里的建议方案!

一、序作为 Android 开发,日常 Coding 时,最频繁的操作应该就是操作 App 内的一系列 Activity。而在 Activity 间传递数据,就需要借助 Intent。不少资料中写到,Intent 在 Activity 间传递基础类型数据或者可序列化的对象数据。但是 Intent 对数据大小是有限制的,当超过这个限制后,就会触发 TransactionTooLargeExce...

2019-04-17 17:22:08 539

原创 Java8 中的Lambda 表达式详解

1. 引言在 Java 8 以前,若我们想要把某些功能传递给某些方法,总要去写匿名类。以前注册事件监听器的写法与下面的示例代码就很像: manager.addScheduleListener(new ScheduleListener() { @Override public void onSchedule(ScheduleEvent e) { ...

2019-04-17 15:43:20 131

原创 动画:一招学会TCP的三次握手和四次挥手

TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一。很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答。本篇尝试使用动画来对这个知识点进行讲解,期望读者们可以更加简单地地理解TCP交互的本质。TCP/IP代表传输控制协议/网际协议,指的是一系列协组。可分为四个层次:1、数据链路层、网络层、传输层和应用层。2、 在网络层:有IP协议、...

2019-04-16 22:25:50 232

原创 不关 Android 云备份,坑了开发和测试!

一、序之前水群的时候,有个群友在小米手机上,碰到个很奇怪的现象。在 SP 中持久化的数据,App 卸载重装之后,又被还原了。还原就还原吧,其实也不是什么大事,但是还原的并不是最后一次使用的数据,而是之前不知道什么时候使用的数据,这就变成问题了。举个例子:这个手机用 A 账户登录了,在 SP 中存储了我们登录的信息,例如&...

2019-04-16 16:25:34 458

原创 接口返回的 JSON,再离谱也有办法,谈谈 JSON 容错!

一、序技术简历的技能树这一项中,JSON 和 GSON 都是常客。但是还有面试候选者将他们的理解停留在最简单的使用上。“JSON 是一种具有自描述的、独立于语言的、轻量级文本数据交换格式,经常被用于数据的存储和传输。而 GSON 可以帮我们快速的将 JSON 数据,在对象之间序列化和反序列化。”GSON 的&n...

2019-04-16 15:51:30 1252

原创 妙用ConstraintLayout的Circular positioning

#0前言在上一篇中,我们学习了ConstraintLayout的基本使用,如果还不了解ConstraintLayout,快去学习一下吧:ConstraintLayout使用指南https://www.jianshu.com/p/958887ed4f5f本号也推送过一些文章:再学一次ConstraintLayout 一些新特性我们这一篇主要讲解一下ConstraintLayout的C...

2019-04-15 20:41:53 331

原创 漫谈 996 工作制:其!实!还!有!很!多!你!想!象!不!到!的!好!处!

996.ICU 项目就像一根小小的火柴,点燃了全中国互联网从业者聚集在心中的那把堆积已久、无处发泄的干柴;烈火熊熊,惊动了阿里马云、京东刘强东等一众大佬中的大佬,他们也谈996;是是非非,各抒己见;文字早已疲倦,不如咱们漫画再见。...

2019-04-15 16:01:49 497

原创 交友软件探探首页波纹扫描效果的实现

闲着也是闲着的时候,打开探探划一划,挺多男同胞会这样吧。这不,我也是这样,看到首页探探的效果还是挺吸引人的。之前仿照实现了一个,效果还差一点,正好今天没事完善一下,写下来,希望看到能有收获。实现的效果首先看看实现后的效果,先不多说。当然跟探探的原版还是有差距的,没有在细节上面优化的更多。不过花时间调一调还是可以的,现在的效果可以看到,我在下面加了帧数的显示,在真机上显示还是很流畅的,模拟器上由...

2019-04-15 15:35:27 362

原创 太快了!安卓10还没开始用 安卓11已经来了

前言在每一年的谷歌开发者大会上都会带来全新版本的Android系统,今年也不例外,而从这两年的更新变化来看,其加入的内容和改善也变得更为重要,据悉,Android10会在省电、手势操作、通知管理进行更多改变。每一年谷歌开发者大会上都会带来Android新版本的消息,与往年不同的是,今年新版本的发布会更晚一些,会在今年的秋季正式到来,不过现在已经有消息流出。根据相关消息显示,最新的An...

2019-04-12 21:56:10 8029 1

原创 我们经常用的Loading动画居然还有这种姿势

#1背景Loading动画几乎每个Android App中都有。一般在需要用户等待的场景,显示一个Loading动画可以让用户知道App正在加载数据,而不是程序卡死,从而给用户较好的使用体验。同样的道理,当加载的数据为空时显示一个数据为空的视图、在数据加载失败时显示加载失败对应的UI并支持点击重试会比白屏的用户体验更好一些。加载中、加载失败、空数据的UI风格,一般来说在App内的...

2019-04-12 17:18:40 864

原创 一位6年老Android面经总结

前言准备面试其实已经准备了挺久了,当时打算面试准备了差不多以后,跟公司谈谈涨薪的事情,谈不拢的话,就年后直接找其他的公司。谁想到婚假还没休完,老板就在公司宣布了撤出上海的决定,愿意去深圳的就去,不愿意的就自己找工作,给了一个多月的时间找工作,就没有赔偿了,反正公司也没钱。悲哀….幸好提前准备过,不过都是断断续续的今天看点这个,明天看点那个,三天打鱼两天晒网的,也没用心去准备.这下好了,直接到...

2019-04-11 16:56:46 485 1

原创 实现 Android TextView 文字轮播效果

啥叫文字轮播,不废话看图:这是我们 app 项目中常常遇到的需求了,一般大家都是找找别人写好的第三方控件来用的,我也是这样。但是随着时间长河的流逝,我们也必须相应的成长, 文字轮播这种常见的东西可是不能错过的我找一些实现,总结下实现思路:1.ViewAnimator 思路使用 ViewAnimator 自身特性,对期中的子 view 实现动画切换2.自定义 viewGroup 思路在...

2019-04-11 15:23:54 1298

原创 要想进阶?先导源码

关于阅读源码,本号之前推送过一篇非常详尽的文章教大家如何方便的阅读framework源码:grepcode都无法访问了,如何更好的阅读源码大致为在线查看:http://androidxref.com/https://www.androidos.net.cn/sourcecode替换adk中android.jar直接在as中查看:https://github.com/anggrayu...

2019-04-10 21:56:06 300

原创 如何造好轮子?编写 Android Library 的最佳实践

1写在前面一直以来,技术圈里面只要涉及 Android Library 的文章,几乎都在讲如何发布到 Maven/Jcenter,却很少见到有文章来指导大家如何编写一个规范又好用的 Android Library。这几年 Android 各式各样的开源库层出不穷,国内的很多开发者都慷慨地将自己的一些成果做成开源库发布出去,然而当我们兴致盎然地想去试用一下这些库的时候,却时常会遇到“引用”“依赖...

2019-04-10 16:49:10 445

原创 程序员的难题:知识学了就忘怎么办?

正文共:1556字不多,耐心读完吧!对于温故知新这一块,我是想用它来着重强调我们在自学中遇到的一个 大问题,那就是“学了就忘”,我相信这是每个自学者都会遇到的一个大问题,而且很多人还不知道如何解决,或许说有很多人没有思考过这个问题产生的原因!当然当你看完了这篇文章,我想你以后再也不需要为这个问题困扰了,我将给出产生这个问题的原因以及应对的方法,你只需要照着做就可以了。首先我给出出现这种情...

2019-04-09 20:23:04 2009 1

原创 对于 Android 业务开发的一些理解总结

关于 PopupWindow ,很多博客有谈到利用 Builder 设计模式的链式写法,以下是我项目中的类似写法 /** * 显示选择性别 */ private void showGenderPopWindow() { if (null == genderPopupWindow) { CommonPop.Builder bui...

2019-04-09 15:10:55 223

原创 谷歌的Android Q到底有哪些新特性及变更?

Android Q 隐私更改相关介绍存储范围变更Android Q 改变了应用程序访问设备外部存储上文件的方式。 通过使用更细粒度的媒体特定权限替换以前的 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE权限。外存中私有目录权限变更Android Q 为每个应用程序提供了一个独立的在外部存储设备的存储沙箱,没有其他应用可以直接访问您应用的沙盒文...

2019-04-08 21:06:32 478

原创 Android程序员接下来的路该如何走?

随着“5G”(第五代移动通信技术)商用进程越来越快,各个芯片和终端厂商们都已经开始布局准备,想必智能手机会是消费者最先能够接触到5G的重要终端,而和其相辅相生的移动互联网也势必会有新的发展。但是和行业本身的发展不相称的是, Android 开发者的市场需求仿佛处于寒冬。最直观的现象就是,工作没有那么好找了。2018年底开始,不管从是官方的公告或是同事午餐间隙的聊天里,都透露着一个信息:资本寒...

2019-04-08 17:09:32 422

原创 Android进阶知识:ThreadLocal

1、ThreadLocal是什么?ThreadLocal是一个线程内部数据存储类,通过他可以在指定的线程中存储数据。存储后,只能在指定的线程中获取到存储的数据,对其他线程来说无法获取到数据。2、ThreadLocal的使用场景日常使用场景不多,当某些数据是以线程为作用域并且不同线程具有不同的数据副本的时候,可以考虑使用ThreadLocal。Android源码的Lopper、Activit...

2019-04-07 21:05:20 232

原创 Android 组件化之路

首先先分清楚两个概念:模块化模块化编程是将一个程序按照功能拆分成相互独立的若干模块,它强调将程序的功能分离成独立的、可替换的模块。每个模块内只有与其相关功能的内容。模块化编程和结构化编程与面向对象编程是密切相关的,它们的目的都是将大型软件程序划分成一个个更小的部分。模块化编程的粒度会更“粗”一些。在Java9中也在编译器层面提供了模块化的支持:Java Platform Module Sys...

2019-04-04 20:23:02 249

原创 2019 年 Android 面试题汇总

###1.跨进程通信的几种方式Intent,比如拨打电话ContentProvider 数据库存储数据Broadcast 广播通信AIDL通信,通过接口共享数据###2.wait和sleep 的区别wait是Object的方法,wait是对象锁,锁定方法不让继续执行,当执行notify方法后就会继续执行,sellp是Thread的方法,sellp是使线程睡眠,让出cpu,结束后自动继续...

2019-04-04 14:56:06 481

原创 Android常用图片加载库介绍及对比

前言图片加载在 Android开发项目中是必不可少的,为了降低开发周期和难度,我们经常会选用一些图片加载的开源库,而Android发展到现在图片加载开源库也越来越多了,下面介绍几种开发中主流的图片加载框架&以及他们之间的对比优缺点。Android主流图片加载库PicassoGlideFresco介绍& 对比1.PicassoPicasso中文翻译为...

2019-04-03 17:23:35 521

空空如也

空空如也

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

TA关注的人

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