自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

1

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

原创 Android工程师,如何使用Kotlin提供生产力?

Kotlin 以其简洁的特性而闻名,而在我们的实践中,更加简洁就意味着更加高效。事实上,在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升了生产力。在接下来的内容中,我会分享一些 Kotlin 帮助我们的合作伙伴工程师们提高生产力的方式,并为您介绍有助于此的 Kotlin 功能。在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升了生产力简洁、简单且高效Kotlin 的简洁性对开发

2021-09-29 21:15:42 141 1

原创 面试必问,敲重点!讲一下 Android Application 启动流程及其源码?

一、写在前面在开始之前,你需要知道下面几点:有一份编译好的 Android 源码,现在的 AS 基本能满足,动手跟着步骤走,理解更深刻对 Binder 机制有一定的了解本文基于 API 26,用什么版本的源码并不重要,大体的流程并无本质上的区别从用户手指触摸点击桌面图标到 Activity 启动关键类简介ActivityManagerService:AMS 是 Android 中最核心的服务之一,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统

2021-09-29 20:46:17 2051 2

原创 Android每日一题:如何解决ScrollView嵌套中一个ListView的滑动冲突?

去新成立了研发中心面试,面试官很和蔼的和我讨论了一些技术问题,大多数还能应付,记忆较深的便是如何处理嵌套ListView的滑动事件冲突问题。这个问题当时我没有回答好,主要是我对自定义View方面经验不足,Touch事件的分布机制也没有理解清楚。之后并没有给我答复,到是过了两个月HR再次联系我,问我如果过去的话什么时候能到岗,并强调他们是由于公司投资的手绪问题拖了这么久。只能感叹能否进某家公司其实也是需要缘分的。我当时对在本地的公司已经不感兴趣了,因为“世界这么大,我想出去看看”。面试题:如何解决Scr

2021-09-28 22:19:59 306 2

原创 弄清模块化、组件化、插件化的区别,业务开发提升一个档次

上次,我们讲了MVC、MVP、MVVM,其实从狭义上来讲,Android的架构概念就在这儿,无论怎么变,都是加加减减一些边边角角的东西,不足在意。从本篇开始,打算从广义上探究一下移动架构的思想;包括现在仍然比较火热的模块化,组件化, 插件化等架构思想。话说在前面,本篇旨在说明当前主流架构的设计概念,让大家了解当前的架构形式,以及主要用了什么设计思想,什么设计思路,算是引导篇…一、模块化,组件化,插件化上述概念已经好久了,或许还是有一些同胞对这些概念不是很清楚,大体知道是什么,但是详细也不知道是什么。现

2021-09-25 21:13:21 390 2

原创 干了5年的Android,近期陷入瓶颈期,破局之路怎么走?

这是知乎上的一个热帮问题,干了5年的Android,突然发现自己什么都不会,怎么办?很伤脑筋作为一个工作多年的Android开发者,我曾经也在职业规划上迷失过,当时比你的情况更要糟糕,每天都胡思乱想,做着重复的工作,项目也是相同的开发流程,总觉得自己到头来什么也不会。当时,我还记得面个15K岗位的时候,各种底层、源码轮着来,被面试官问的哑口无言,面试官见我技术不行,最后竟然到对一个5年的Android开发问四大组件、Activity的生命周期、自定义view的绘制流程。有点离谱吧!但这是我17年

2021-09-24 21:13:58 328 2

原创 Android 项目实战:组件化与集成化

什么是组件化?回答这个问题前,我们先假设一个场景:随着公司业务越来越好,原先的App团队开始划分为多个业务小组,例如:用户组(负责维护用户信息相关业务,如:登录、注册等)、商城组(负责维护商城订单相关业务,如:订单列表、下单、订单详情等)…某日下午,用户组小A气势汹汹来到商城组小B面前。用户组小A:你怎么修改了我用户详情接收的参数数据?商城组小B:你那写的什么玩意,调你的详情传递订单用户信息都找不到入口,当然得改。用户组小A:那你也不能擅自修改啊,现在其他模块一调就蹦。商城组小B:项目急着上

2021-09-22 20:19:28 341 2

原创 「Android」Binder机制入门学习笔记

Binder是什么?Binder是一种进程通信机制Binder是一个虚拟物理设备驱动Binder是一个能够发起通信的类为什么需要多进程提升稳定性每个进程互相独立,子进程崩溃不会影响主进程的稳定性(微信小程序、插件化插件…)突破内存限制虚拟机对每个进程限制了内存大小,让某些组件运行在独立进程中,可以降低OOM的发生概率,也可以降低被系统杀死的概率(加载图片…)业务需要某些通信或服务进程需要保活,插件化接入插件开发需要(消息推送进程…)为什么使用BinderLinux现有IPC机

2021-09-17 21:06:35 235 2

原创 详解原理,从源码层细聊OkHttp

OkHttp 是一套处理 HTTP 网络请求的依赖库,由 Square 公司设计研发并开源,目前可以在 Java 和 Kotlin 中使用。对于 Android App 来说,OkHttp 现在几乎已经占据了所有的网络请求操作,因此它也是每一个 Android 开发工程师的必备技能,了解其内部实现原理可以更好地进行功能扩展、封装以及优化。适用于 Android 和 Java 应用程序的 HTTP 和 HTTP/2 客户端。OkHttp的4.0.x版本已经全部由java替换到了Kotlin,API的一些使

2021-09-16 21:23:16 270

原创 Jetpack Compose Banner即拿即用

Jetpack Compose目前没有官方的Banner控件,所以只能自己写,搜了些资料才完成,非常感谢之前分享过这些内容的大佬们。效果图accompanist组库accompanist旨在为Jetpack Compose提供补充功能的组库,里面有非常多很好用的实验性功能,之前用过的加载网络图片的rememberImagePainter就是其中之一,而做Banner的话需要用到的是其中的Pager库。//导入依赖 implementation "com.google.accompanist:a

2021-09-13 16:47:52 1097 3

原创 默认状态下,ViewGroup为什么不走onDraw()?

一、起因遇到这个问题是在一次自定义ViewGroup中重写了onDraw()方法,并且在onDraw中绘制了画面,但是运行过后,画面没有效果。随后自己写了一个简单的Demo,打出日志看了一下绘制流程,如下:从上面的图片可以清楚的发现在绘制时,只是走了onMeasure,onLayout和dispatchDraw,onDraw方法却没有调用。随后借鉴了网上的说法,在自定义ViewGroup的xml中设置了一个背景颜色,并运行打印log这个时候就可以看见在dispatchDraw之前调用了onDra

2021-09-09 15:15:27 335 3

原创 Android 仿微信聊天炸“si”效果!!诶,就是玩!

Long Long Ago,微信8.0更新了一个“炸屎”的新功能,还蛮有新意。这两天和朋友聊天触发了这个功能,当时心想,诶!这文章素材不就来了吗?!趁着周末时间,赶紧来实现一下。我们先来看看整体实现的效果:本篇文章无技术含量,纯属娱乐,纯属娱乐思路经过不断试验,反复查看了微信炸????的效果,基本上可以将其拆解成几个小部分。选择炸弹表情,发送后炸弹会以抛物线的形式向对方发送,同时????会进行翻转; 在????碰到????表情的时候,出现爆炸动画; 在动画爆炸的同时,出现大概

2021-09-08 20:16:38 461 2

原创 Jetpack的MVVM通信 - LiveData的原理分析

概述在上一篇文章中,我们介绍了 ViewModel的基本使用及原理分析。因为 ViewModel通常还需要结合组件间通信工具一起使用,所以上次文章也是讲了 ViewModel + LiveData结合使用的场景。这次会结合上篇文章的例子来分析 LiveData的一些原理。上一篇:Jetpack的MVVM实现 - ViewModel的使用及源码分析​mp.weixin.qq.com/s?__biz=Mzk0ODAyNjE3Nw==&mid=2247484048&idx=1&sn

2021-09-06 21:26:49 265 2

原创 Jetpack的MVVM实现 - ViewModel的使用及源码分析

概述这篇我们继续讲 Jetpack,具体讲实现 MVVM架构的 ViewModel。这次的例子会将 ViewModel和 LiveData结合使用,然后分析一下 ViewModel的源码。LiveData将留到下篇文章分析。上一篇文章MVP基础架构搭建 的例子里,用了MVP的架构实现了网络加载的流程。这次我们要把上次 MVP架构升级为 这次的MVVM,将上次例子的 Presenter模块和 Model模块去掉,只保留网络加载引擎。然后结合 ViewModel和 LiveData来实现 MVVM。1、.

2021-09-03 16:30:32 266 2

原创 「性能优化系列」APP内存优化理论与实践

当一个应用同时运行越来越多的任务以及复杂的业务,Android系统的内存管理机制已经无法满足内存的释放与回收,为了应用的稳定性与性能,去控制内存的创建和回收就成为了一个重要的命题。本篇文章主要涉及内容如下:对象的创建与回收;分配内存的方式,对象在JVM中的生命周期;判断对象是否需要被回收,垃圾回收算法;内存抖动、内存泄漏的监控;Bitmap的大小、重复监控方案;设备分级方案。一、对象的创建和回收1.1、对象的创建在java中对象的创建基本上就是一个new,但new的背后在内存中做了些

2021-09-02 21:17:04 695 4

空空如也

空空如也

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

TA关注的人

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