Android必备技
dawN4get
读万卷书,行万里路,此生足矣。
展开
-
Android Studio多渠道打包
1、 假设我需要分2个渠道:一个是国内的应用市场,一个是google play的, 需要 在app module下的build.gradle里添加如下代码:android { ... productFlavors { cooby {} google {} productFlavors.all { flavor ->原创 2017-04-16 15:15:54 · 348 阅读 · 0 评论 -
Android代码规范(转)
Android程序员们的必须课——Android代码规范转载 2017-09-12 10:25:34 · 470 阅读 · 0 评论 -
OkHttp拦截器(简译)
OkHttp-wiki 拦截器翻译 2017-11-27 10:28:48 · 328 阅读 · 0 评论 -
吃火锅版Dagger2
dagger2基础应用原创 2017-12-25 17:54:07 · 329 阅读 · 0 评论 -
WebView截取长图
现在好多APP的分享多了个“长图文分享”,自己在开发中也遇到了这个需求,正好作个记录吧原创 2018-01-03 14:54:24 · 651 阅读 · 0 评论 -
github上传时出现error: src refspec master does not match any解决办法
大前提:你已经安装好了git1、在github上创建项目2、clone到本地 :git clone https://github.com/xxxxxxx/yyy.git3、把项目粘贴到yyy目录(git帮你创建好的目录)4、git add . (将改动添加到暂存区,过程中需要那你填写你github的信息)5、git commit -m “提交说明”6、git push原创 2018-02-06 21:45:49 · 882 阅读 · 0 评论 -
AspectJ入门
AspectJ的作用:在不侵入原有代码的基础上,增加新的代码AspectJ之Join PointsJoin Points,简称JPoints,是AspectJ的核心思想之一,它就像一把刀,把程序的整个执行过程切成了一段段不同的部分。例如,构造方法调用、调用方法、方法执行、异常等等,这些都是Join Points,实际上,也就是你想把新的代码插在程序的哪个地方,是插在构造方法中,...原创 2018-05-03 08:54:48 · 549 阅读 · 0 评论 -
自定义Gradle插件和AspectJ实战
生成gradle插件步骤create new Module select Android Library 把生成的module(例如:plugin)里面的东西都删除(除了build.gradle,但是要被gradle里面的所有内容删除)在plugin里面新增一个“src”文件夹,往src文件夹新增main文件夹,再往main文件夹新增groovy和resources文件夹。resou...原创 2018-05-03 09:00:04 · 2545 阅读 · 0 评论 -
RxJava执行流程
核心问题: - 为甚是被观察者订阅观察者 - RxJava执行的流程为甚是被观察者订阅观察者Observable.subscribe(Observer); 从字面上的理解是被观察者订阅观察者,比如报纸订阅了读者。但从开发者的角度来理解,就很正常 了。RxJava这样设置的目的是为了流式Api的设计,还有就是Android中的观察者模式都是这样的写法,比如Vie...原创 2018-04-26 17:01:29 · 1591 阅读 · 0 评论 -
RxJava线程切换原理
这篇文章跟上一篇的RxJava执行流程有关联性,没阅读上一篇的先瞅一下。怎么进行线程切换的subscribeOn(Schedulers.io())首先了解下Scheduler.io()方法,它返回的是一个Scheduler,Scheduler是一个抽象方法,我们知道抽象方法是不能被实例化的,那么返回的肯定是它的实现类: public static Scheduler i...原创 2018-04-27 08:46:26 · 1309 阅读 · 0 评论 -
RxLifecycle源码学习
使用RxJava引起的内存泄漏RxJava很好用,但是随着订阅的增多内存开销也会随之增大,尤其是在配合使用网络请求的时候,当页面被finish,此时订阅逻辑还未完成,如果没有及时取消订阅,就会导致Activity/Fragment无法被回收,从而引发内存泄漏原创 2017-08-03 18:29:50 · 673 阅读 · 0 评论 -
TCP基础知识
TCP三次握手和4次挥手原创 2017-08-08 17:11:41 · 359 阅读 · 0 评论 -
LeakCanary源码学习
OOM是开发中很常见的一个异常,其凶手就是内存泄漏。square公司为我们开源了一个神兵利器——LeakCanary,在开发中为我们提供了很大的方便,让我们能够及时发现和处理代码中的内存泄漏问题。作为一个程序员,本着知其然及只其所以然的态度,就很有必要学习下这款开源框架的思想原创 2017-07-31 22:33:08 · 977 阅读 · 0 评论 -
Retrofit自定义CONVERTERS(fastjson)
Retortfit使用fastJson作为converter原创 2017-05-14 23:25:01 · 504 阅读 · 0 评论 -
WebView性能优化
页面加载速度优化影响页面加载速度的因素有非常多,我们在对 WebView 加载一个网页的过程进行调试发现,每次加载的过程中都会有较多的网络请求,除了 web 页面自身的 URL 请求,还会有 web 页面外部引用的JS、CSS、字体、图片等等都是个独立的 http 请求。这些请求都是串行的,这些请求加上浏览器的解析、渲染时间就会导致 WebView 整体加载时间变长,消耗的流量也对应的真多。接下来我转载 2017-06-18 22:17:35 · 534 阅读 · 0 评论 -
巧用Android多进程,微信,微博等主流App都在用
为什么要使用多进程,一个进程不就可以了吗?转载 2017-06-19 11:52:19 · 778 阅读 · 0 评论 -
最易懂的自定义View原理系列(1)
转自这里前言自定义View原理是Android开发者必须了解的基础;在了解自定义View之前,你需要有一定的知识储备;本文将全面解析关于自定义View中的所有知识基础。转载 2017-06-21 16:10:23 · 310 阅读 · 0 评论 -
面试题:两个Activity之间如何传递参数?
在Android应用中,Activity占有极其重要的地位,Activity间的跳转更是加常便饭。即然跳转(界面切换)不可避免,那么在两个Activity之间传递参数就是一个常见的需求。大多数时候,我们也就传递一些简单的int,String类型的数据,实际中也有看到传递List和Bitmap的。那么我们先回答这个题,如何传递参数:使用Intent的Bundle协带参数,就是我们常用的Intent.p原创 2017-07-12 17:43:59 · 926 阅读 · 0 评论 -
APP被强杀,怎么办?
应用在后台运行时很容易被强杀,这很正常,但是回到前台时,很容易出现空指针的情况。怎么解决这样的问题?原创 2017-07-13 15:30:36 · 1151 阅读 · 0 评论 -
MVP封装
穷人版MVP结构图M <–> P <–> M内存泄漏若M层还在请求数据的时候,Activity或Fragment关闭了,由于V层持有P层的引用,P层又持有M层的引用,从而导致了内存泄漏。如果请求到的数据是在展现在View上的,那么还有空指针异常。解决方案一: 让presenter绑定Activity的生命周期,让它写一个绑定和解绑的方法,在Activit...原创 2018-04-27 16:57:38 · 340 阅读 · 0 评论