- 博客(27)
- 资源 (1)
- 收藏
- 关注

原创 你是否 diss 过别人的代码?—— 怎样的代码才算优秀?
写在前面:一名有三年Android开发经验的女程序员(欢迎大家关注我 ~期待和大家一起交流和学习Android的相关知识)你一定在内心吐槽过别人的代码太烂:没注释、逻辑混乱、到处都是 magic number、实现方案过时、耦合严重、一改就出 bug。此时心中的怒火油然而生,仿佛自己是正义的化身,要代表月亮消灭这样的代码,甚至拼写错误也可以成为你 diss 的点。稍等片刻,先抑制一下燃烧的小宇...
2019-07-16 21:20:17
1195
10
原创 Kotlin刨根问底——你真的了解Kotlin中的空安全吗?
前言Android原生开发,越来越多的公司加上「熟悉Kotlin」这条招聘要求,被如火如荼的Flutter浪潮淹没,大家可能都忘了,在今年五月的Google I/O大会上,官方曾宣布:「Kotlin编程语言是Android应用开发的首选语言」!初次接触Kotlin已是三年前,在上家公司用Kotlin重构了平板的应用市场和电台APP。说来惭愧,至今还是一个API选手,不过相信在座很多Androi...
2019-07-26 15:37:56
705
原创 Android:adb卸载系统应用软技能
ADB卸载首先,通过adb卸载应用,需要Android系统允许adb调试,正常的手机通过多次点击版本号,都可以进入开发者模式,在开发者模式允许adb调试。在某些Android机顶盒系统,系统是禁用adb调试的。一、打开adb调试步骤显示开发者模式:设置->系统->关于手机(关于盒子)->连击版本号->提示还有多少步进入开发者模式->您现在处于开发者模式。不同手...
2019-07-25 17:26:27
14012
原创 Android笔记:在原生App中嵌入Flutter
首先有一个可以运行的原生项目第一步:新建Flutter moduleTerminal进入到项目根目录,执行flutter create -t module ‘module名字’例如:flutter create -t module flutter-native执行完毕,就会发现项目目录下生成了一个module第二步:同步Flutter module依赖进入到新生成的Flutter mo...
2019-07-25 15:18:30
614
原创 一篇看懂Android与Flutter之间的通信
一篇看懂Android与Flutter之间的通信Flutter作为一种跨平台解决方案,经常会作为一个模块嵌入到原生Android与iOS应用中,Flutter与Android原生端的通信必不可少。所以本文就来讲述一下Android如何与flutter进行通信。1、架构概述消息通过平台通道在native(host)与flutter(client)之间传递,如下图所示:为了确保用户界面能够正...
2019-07-24 20:17:39
482
1
原创 Andorid组件化跳转路由
简单介绍路由在组件化工程中有非常重要的作用,两个没有相互引用的module之间怎么通信呢。可以使用EventBus,使用广播,使用类加载,使用反射,scheme,隐式意图等等,这些方法各自都有优缺点,现在开源用的比较多的路由框架中ARouter中使用的是类加载的方法下面我们也使用类加载的方式自己封装一个小路由。那怎么使用类加载的方法来进行不同组件之间通信呢。很简单只要我们能拿到一个类的全类名...
2019-07-24 17:26:38
289
原创 听说优秀的程序员都热爱写作
01、注释也是写作据我所知,优秀的程序员都热爱写作(不止是狭义上的写博客)。如果你能举出一些例外,请一定转告我。为什么这么说呢?一个优秀的程序员想要分享一段开源的代码,假如别的程序员看不懂的话,他的挫败感一定会油然而生,除非他不想让别人看懂,但我觉得这样的话也没必要开源了吧。为了能够让别的程序员读懂他的代码并重用,他不仅要定义恰当的变量和方法,还得写上一些可读性高的注释。就像下面这样:p...
2019-07-23 21:56:57
267
原创 RecyclerView 性能优化丨安卓offer必备
阿里四面有三面都问了这个问题,在此做了整理,希望可以帮助到大家,欢迎查漏补缺。数据处理和视图加载分离我们知道,从远端拉取数据肯定是要放在异步的,在我们拉取下来数据之后可能就匆匆把数据丢给了 VH 处理,其实,数据的处理逻辑我们也应该放在异步处理,这样 Adapter 在 notify change 后,ViewHolder 就可以简单无压力地做数据与视图的绑定逻辑,比如:mTextView....
2019-07-23 14:30:04
500
原创 关于Handler各种梗的问答
做安卓开发的,无人不知,但是很少有人全知。 通过各种途径专门收集了一些关于handler的梗,没事翻翻看,温故而知新。QA_1 多个线程是如何通讯的?通讯?其实就是数据交互。在android中,线程之间的数据交互其实就是通过 内存共享 来实现的。所谓内存共享,就是有一片内存空间存了一堆数据,线程A可以访问,线程B也可以访问。这就是内存共享。Handler一般用于开一个子线程,然后hand...
2019-07-22 16:24:39
544
原创 Android多线程技术选型最全指南-认识解决方案
维度的Trade Off今天我想先说一个英文单词,叫Trade Off。 中文翻译过来可以说叫权衡,妥协,但是这么干巴巴的翻译可能不能体现这个词的牛逼之处,我来举个例子。比如蔡徐坤和肖战同时追求我,虽然肖战颜值更高,但是考虑到蔡徐坤的流量以及和他在一起之后能给我带来的曝光度,我选择了蔡徐坤…Anyway…这就是Trade Off,一个很艰难的选择,但是最后人都是趋于自己的利益最大化做出最后的决...
2019-07-22 15:16:51
261
原创 Flutter必备-Flex布局完全解读
前言Flex布局是Flutter的五虎上将之一,虎父无犬子,其子Row和Column也能力非凡你有没有被mainAxisAlignment,crossAxisAlignment弄得晕头转向,本文将助你将他们纳入麾下。先看一下父子三人在Flutter布局体系中的位置:多子组件布局1.Flex的属性一览2.轴向:direction:Axisenum Axis { horizonta...
2019-07-20 22:22:15
1366
原创 Kotlin 、协程、结构化并发
写在前面:一名有三年Android开发经验的女程序员(欢迎大家关注我 ~期待和大家一起交流和学习Android的相关知识)在 Kotlin 1.1 也就是 2017年初, 首次推出协程作为实验性质的特性开始,我们一直在努力向程序员解释协程的概念,他们过去常常使用线程理解并发,所以我们举的例子和标语是"协程是轻量级线程"。此外,我们的关键 api 被设计为类似于线程 api,以简化学习曲线。这种...
2019-07-19 20:28:01
781
原创 史上最优雅的在VM层取消Coroutine的方式
前提在Android MVVM模式,我使用了Jetpack包中的ViewModel来实现业务层,当然你也可以使用DataBinding。业务层无非就是网络请求,存储操作和数据处理操作,然后将处理好的数据更新给LiveData,UI层则自动更新。其中网络请求我是使用的协程来进行,而不是线程。问题为了防止UI销毁时异步任务仍然在进行所导致的内存泄露,我们都会在onCleared()方法中去取消...
2019-07-19 19:39:57
636
原创 关于内存泄漏优化的一些要点(一)
写在前面:一名有三年Android开发经验的女程序员(欢迎大家关注我 ~期待和大家一起交流和学习Android的相关知识)01.什么是内存泄漏一些对象有着有限的声明周期,当这些对象所要做的事情完成了,我们希望它们会被垃圾回收器回收掉。但是如果有一系列对这个对象的引用存在,那么在我们期待这个对象生命周期结束时被垃圾回收器回收的时候,它是不会被回收的。它还会占用内存,这就造成了内存泄露。持续累加...
2019-07-19 15:29:38
230
原创 谈到Rxjava程序员必须知道的知识
1.前言Rxjava, 具有链式调用、使用简单&事件与结果松耦合的特点。Rxjava, 之所以深受欢迎它包含 非常多操作符,能通过 【链式形】优雅整洁的代码几乎能实现所有的功能需求。 本文特点:图多字少、逻辑简单。之前面试中被问了很多Rxjava的知识,今天献一份不一样诠释,希望大家喜欢。2.目录3.简介4.原理浅析**Rxjava,**扩展自观察者模式。4.1 ...
2019-07-18 22:17:25
502
1
原创 Android 装逼技术之暗码启动应用
写在前面:一名有三年Android开发经验的女程序员(欢迎大家关注我 ~期待和大家一起交流和学习Android的相关知识)什么是暗码?在拨号盘中输入***####***后,APP 可以监控到这些输入,然后做相应的动作,比如启动应用,是不是有点骚。下面看下这个骚操作是如何实现的。效果预览源码DialtactsActivity#showDialpadFragmentDialtactsA...
2019-07-18 20:39:15
491
原创 Flutter和原生应用性能对比
写在前面:一名有三年Android开发经验的女程序员(欢迎大家关注我 ~期待和大家一起交流和学习Android的相关知识)前言我们知道flutter跨平台的原理是采用dart语言预编译的方式直接编译出各个平台的原生代码,而不需要类似RN用JavaScript桥接器执行原生代码。那么这样做的性能究竟如何呢?是否能达到和原生一样的流畅度,是否如官方所说达到恒定60fps的性能体验?今天我们就以an...
2019-07-18 18:14:50
12582
4
原创 Kotlin基础:用Kotlin约定简化相亲
写在前面:一名有三年Android开发经验的女程序员(欢迎大家关注我 ~期待和大家一起交流和学习Android的相关知识)这篇是@唐子玄写的~嘻嘻嘻如果用代码实现择偶标准的判断逻辑,会很容易写出又臭又长的代码。本文通过 Kotin 独有的语法特性“约定”来增加代码的可读性、复用性。业务场景假设女生的择偶标准如下:未婚且岁数比我大,如果对方是本地帅哥则对收入降低标准(年薪>10万),如...
2019-07-18 14:45:06
432
原创 一种非常好用的Android屏幕适配
前言网上关于屏幕适配的文章已经铺天盖地了,为什么我还要讲?因为网上现在基本都是使用 屏幕分辨率限定符 进行适配,即每种屏幕分辨率的设备需要定义一套 dimens.xml 文件。由于不同分辨率的设备太多了,而且有些设备还有虚拟按键(例如华为手机),这样就还需要每个有虚拟按键的设备加多一套 dimens.xml 文件,再加上平板那些你会发现 dimens.xml 文件所占的体积已经超过2M了!这绝对...
2019-07-17 17:16:27
696
1
原创 那些年,我们听过的五月天——基于Python3爬取并下载网易云歌曲
前言:有三年开发经验的女程序员,有10来年追星路程的歌迷哈哈哈哈!五月天的歌曲成为了记忆中青涩而又躁动的青春的触发器。刚好最近在学习Python3网络爬虫,如是想把网易云音乐上面的关于五月天的歌曲及歌词给下载下来,下面将详细的介绍操作过程。那些年,我们听过的五月天——基于Python3爬取并下载网易云歌曲1. 总体思路分析在行动之前,首先想象一下我们要将目标歌曲及歌词下载下来,需要经过哪些...
2019-07-16 17:11:28
396
原创 搞Android开发的你,真的会用Drawable吗?
Drawable在android当中非常常见,每天都会和它打交道,但很多人却很少知道Drawable有哪些常用的方法,甚至有时候在面试的时候问起也是一脸茫然。究其原因可能是Drawable真的是封装得太好了,以至于基本不用关心它的实现。Drawable顾名思义,一个可以Draw的东西,这是一种高度抽象的对象,至于里面怎么Draw完全任意实现。Android上面已经封装好了很多Drawable,比...
2019-07-15 14:32:57
492
原创 一次解决Android OOM的经历
OOM**OOM(Out Of Memory)**是Android应用开发中相信每个人都遇到过的问题,而OOM在crash log中的stack trace一般没有实际意义,因为是在分配内存的时候才会抛出OOM异常,而这个时候的stack trace和OOM的原因没有任何关系。所以OOM问题的定位和分析就需要多花费一些功夫。下面,我就结合一个例子,来讲讲怎么定位OOM问题。问题在程序员们把...
2019-07-12 20:40:22
1152
原创 Flutter为何对程序员来说如此重要?
写在前面:一名有三年Android开发经验的女程序员(欢迎大家关注我 ~期待和大家一起交流和学习Android的相关知识)移动开发技术手段从原始的原生应用开发,到 Google 和 Apple 各自推出新的语言 Kotiln、Swift,然后又发展到各种跨平台 Hybrid App 开发,如 React Native、Weex、小程序等等。不过这些方案或多或少都有一些局限性和缺点,于是 Goog...
2019-07-12 17:58:36
737
原创 关于Android 开发优化的建议
一、Android编码规范1.java代码中不出现中文,最多注释中可以出现中文;2.局部变量命名、静态成员变量命名:只能包含字母,单词首字母出第一个都为大写,其他字母都为小写;3.常量命名:只能包含字母和_,字母全部大写,单词之间用_隔开;4.layout中的id命名:命名模式为:view缩写_模块名称_view的逻辑名称view的缩写详情如下LinearLayout:llRelat...
2019-07-05 20:54:02
956
原创 安卓程序员先定一个小目标:年薪30k
先做个自我介绍, 坐标帝都,5年经验,跳槽之前在一家传统小公司,年薪21万。这次面试前前后后大概两个月的时间,面试了大概6家公司,命中4家,最终去了一家估值 70亿美金的生鲜电商独角兽,年薪42万,刚好翻倍。话不多说,直接进入面试现场!好未来开始面试第一天上午投递好未来,下午3点面试,一共面试了3轮,问的问题比较多。第一轮面试官看了我的简历,首先让我画出Eureka的执行流程,这块在之...
2019-07-04 21:02:19
249
1
原创 Android程序员月薪达到两万,技术水平需要达到什么程度?
最近跟朋友在一起聚会的时候,提了一个问题,说Android程序员如何能月薪达到二万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到。也许是的,小公司或者非互联网企业拿二万的不太可能是码农了,应该已经转管理。还有区域问题,这个不在我的考虑范围内,因为除了北上广深杭,其他地方也很难达到。还有人提到这个水平不止2w,其实工资是跟面试表现有关的,也跟其他综合水平有关,...
2019-07-03 14:39:32
1087
2
原创 我是如何在一晚上拿到阿里巴巴offer的?
我是如何在一晚上拿到阿里巴巴offer的?为什么文章题目是这个,看完后会有答案。开篇我找工作时是2015年。那一年,BAT大量缩招,就业形势严峻,互联网寒冬消息蔓延。最终我经过激烈角逐拼下了几个大厂offer,回顾往事,觉得分享出来,也许对你能有所借鉴。简历这一年的7月初,阿里巴巴早早开始了内推流程,拉响了抢人大战的号角。我也第一时间获得了消息,开始持续关注。在内推渠道刚开通后,周...
2019-07-02 22:06:00
314
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人