自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ApkCore的专栏

学海无涯,从头开始

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

原创 Kotlin之心路历程

Kotlin之心路历程以小白眼光看kotlinkotlin这个小丫鬟被谷歌扶正为大房两年,期间看过不少博文,很多人也已经把个人项目迁移到kotlin了,当然国外的开发者更给力,直接大部企业开发已经kotlin,也订阅了涛哥的极客时间(一直没时间看,果然看视频太费事,还是文章可以抽得时间挤一挤学),一直是不想学习啊,一个人的惰性就是这样,java又不是不能用,代码通俗易懂。说句心里话,jav...

2019-09-18 16:13:22 354

原创 MQTT的极速搭建与验证

mqtt服务端网上貌似已经找不到apache-apollo-1.7.1的官网下载地址了,不过我废了挺大劲还是找到了。。。这里提供apache官网的镜像下载地址:http://archive.apache.org/dist/activemq/activemq-apollo/1.7.1/。安装以在windows为例,在cmd中先cd到bin目录下,然后执行apollo crate test(名...

2019-09-05 10:13:43 594

原创 重学设计模式——代理模式之手写JDK动态实现

代理模式为其他对象提供一种代理以控制对这个对象的访问。最重要的三要素:有执行者、被代理人对被代理人来说,这件事是一定要去做,但是自己因为某些原因暂时不能去做,只能通过代理来做代理能获取到被代理人的资料(拿到被代理人的引用)动态代理动态代理通过反射机制动态地生成代理者的对象,我们在code的时候不必要关心代理谁,代理谁我们将在执行阶段来决定。JDK为我们已提供了很方便的动态代理接口...

2019-06-25 22:52:03 194

原创 关于链表的常见算法题(二)

关于链表的常见算法题(二)从有序链表中删除重复的节点给定一个有序链表,请删除其中的重复元素,使得这个元素仅出现一次Input: 1->1->2->3->3Output: 1->2->3其实这个题比上篇讲的https://juejin.im/post/5d067f4ee51d4577596486fb#heading-5中删除重复的节点还要容易一些,...

2019-06-17 23:18:33 348

原创 关于链表的常见算法题(一)

关于链表的常见算法题(一)链表一直是面试最喜欢考的数据结构,灵活而又多变,代码往往也不是特别长。从尾到头打印链表链表一直是面试最喜欢考的数据结构,灵活而又多变,代码往往也不是特别长。输入一个链表的头节点,从尾到头反过来打印出每个节点的值例如链表为1->2->3,打印出3 2 1有三种思路可以参考:栈:栈天然是先进后出的,在遍历链表时,把值按顺序放入栈中,最后出栈就是...

2019-06-17 01:45:23 302

原创 重学设计模式——线程安全的观察者模式

线程安全的观察者模式先来说下观察者模式,其实在Android开发中,我们使用观察者模式的时候还是非常多的,无论是广播使用的发布-订阅模式,还是listview的notifyDataSetChanged,或者是RxJava的使用,都是观察者模式的运用。今天就来重新看一下观察者模式。概念订阅模式,又称观察者模式。定义对象间一种一对多的依赖关系(注册),使得当一个对象改变状态后,则所有依赖它的对象...

2019-06-15 23:16:28 738 1

原创 重学Android——Glide4.x源码分析(2)

Glide的加载流程接上文重学Android——Glide4.x源码分析(1)执行加载主流程接上一文,昨天讲到图片加载,最终调用到了onSizeReady的方法,调用了其中的engine.load方法 @Override public synchronized void onSizeReady(int width, int height) { stateVerifier.th...

2019-06-14 22:54:33 189

原创 重学Android——Glide4.x源码分析(1)

Glide4.x先来说下世面上常用的三种图片加载框架Picasso,Glide,FrescoPicasso与Glide相比:相似——api上的调用差不多,都支持内存缓存,glide是picasso的升级,性能有一定的提升差异缓存不同,picasso2级缓存,没有磁盘缓存,Glide三级缓存,内存-磁盘-网络的优先级加载黑乎乎。Picasso默认加载的图片格式是ARGB-8888,G...

2019-06-14 01:37:52 371

原创 重学Android——OkHttp3源码解读

OkHttp3官网的介绍——An HTTP & HTTP/2 client for Android and Java applications。它的优点:支持http2,对一台机器的所有请求共享同一个socket支持连接池,支持连接复用,减少延迟支持透明gzip压缩响应体通过缓存避免重复的请求请求失败时自动重试主机的其他ip,自动重定向API调用方便OkHttp的使用...

2019-06-12 22:29:36 197

原创 重学Android——Rxjava2.x源码解析

Rxjava的诞生背景首先要从异步编程说起,最开始的原生的系统中,如果UI系统处理耗时任务,会引发ANR,所以都是放在子线程做耗时任务,比如网络请求或者IO操作,再来更新UI界面,这需要在主线程来完成,这样就涉及到了异步编程。最开始的异步编程主要有:使用Java自身提供的Future模型但这种异步结果获取比较困难,必须调用Future.get(),回去查看异步是否完成,如果完成,就返回...

2019-06-12 01:49:19 196

原创 重学Java——Synchronized底层实现原理

深入Synchronized底层原理对于synchronized大家应该都很熟悉,主要作用是在多线程并发时,保证线程访问共享数据时的线程安全。它的作用有三点:确保线程互斥的访问同步代码保证共享为师的修改及时可见有效解决指令重排(synchronized同步中的代码,JVM不会轻易优化重排序)Synchronized使用它的用法主要是从两个维度上来区分:根据修饰对象的分类修...

2019-06-11 00:48:53 236

原创 重学Android——Binder运行机制

Binder昨天从源码角度看了Android9.0下Activity的启动流程,其中关于跨进程的调用,都使用到了Binder进行跨进程通信,那么今天来阅读下Android的FrameWork层怎么实现Binder的吧。IPCIPC是Inter Process Communication的缩写,意思是进程间通信。在Android系统中,每个应用都运行在一条独立的进程上,具有自己的DVM实例,而...

2019-06-09 18:36:04 211

原创 重学Android——基于Android9.0的Activity启动流程

Activity系统的启动首先总结了解一下Android系统的启动:启动电源以及系统启动引导程序BootLoader——BootLoader是android操作系统开始运行前的一个小程序,它的主要功能就是把系统os拉起来并运行Linux内核启动——在内核启动后,会在系统文件中找到init.rc文件,并启动init进程init进程启动——初始化和启动属性服务,并启动zygote进程Zy...

2019-06-09 00:53:08 377

原创 重学Java——ThreadLocal源码解读

ThreadLocal今天端午,就看一下轻松点的东西吧,上次说消息机制,说到Looper时,就是把Looper存储在ThreadLocal中,然后在对应的线程获取到对象,今天就来看下ThreadLocal的源码解读吧。ThreadLocal的简单使用还是上次讲的那个例子 final ThreadLocal<Integer> threadLocal = new Thread...

2019-06-07 23:26:01 174

原创 重学Android——View的事件分发

本文源码Api28View的事件分发我们都知道,点击事件最重要的三个方法//用来进行事件分发public boolean dispatchTouchEvent(MotionEvent ev);//判断是否拦截某个事件public boolean onInterceptTouchEvent(MotionEvent ev);//处理touch事件public boolean onT...

2019-06-07 01:04:28 185

原创 重学Android——消息机制

Android消息机制本文源码Api28在Android在主线程的创建时,会自动创建一个looper,不需要我们自己来创建。那么Android应用启动流程中,会由AMS调用的ActivityThread类,它的main入口方法里:public static void main(String[] args) { ... Looper.prepareMai...

2019-06-06 00:22:47 248

原创 匹配字符串之——KMP算法深入理解

KMP算法的用途一般在字符串匹配的时候,我们通常想到的就是使用KMP算法来处理。KMP的使用,在网上有很多实例,但是讲得很让人容易接受的不是很多,但总感觉那层窗户纸没有捅破,这里我结合前人的知识,讲下自己的理解,希望大家多指教。常规暴力匹配法有一个字符串&quot;BBC ABCDAB ABCDABCDABDE&quot;,我想知道,里面是否包含另一个字符串&quot;ABCDABD&quot;?预处理时间 O(0)时间复杂...

2018-11-20 23:44:35 165

原创 打造兼容的Android揭面水波动画库

今天看到了@[Anderson大码渣](http://www.jianshu.com/u/016a5ba708a0)写的文章,对5.0以上默认使用ViewAnimationUtils.createCircularReveal(view, centerX, centerY, startRadius, endRadius);来实现渐变, ,写得非常好,这一块的封装就跳过了,可以直接看他的原文。4.0以

2017-05-04 17:01:40 520

原创 Messenger轻量级IPC方案

概述什么是messengerMessenger可以翻译为信使,通过它可以在不同的进程中传递Messenger对象,在Message中放入我们要传递的数据,可以轻松实现数据的跨进程传递。Messenger是一种轻量级的IPC方案,底层实现了AIDL。什么是基于消息的进程间通信如下图所示 可以看到,我们可以在客户端发送一个Message给服务端,服务端在handler中会接收到客户端的消息,然后进行对应

2017-04-04 00:17:09 611

原创 Android高级UI_双缓冲策略解决GPU卡顿

在上一篇中有讲到绘制一个水波纹效果,当打开此界面过久时,会有明显的卡顿,查看内存很稳定, 这时候我们先打开开发者选项里的”GPU呈现模式分析“,设置为“在屏幕上显示为条形图”(不同的手机可能有略微的差异,我这里用的是小米)。 可以看到,当重复绘制时,GPU的负荷太高,卡顿也就再所难免。如何解决当我们只绘制一段水波纹不使用canvas.clipPath(mPath, Region.Op.INT

2017-03-27 15:01:22 918

原创 Android高级UI_Path小试牛刀<二>

上一篇讲了path的基本用法,这篇我们要去实现水波纹以及粘性小球 这里就不得不提到贝塞尔曲线一阶贝塞尔曲线:Android 提供方法:lineTo()二阶贝塞尔曲线二阶贝塞尔曲线有一个控制点 P1 和两个数据点 P0,P2。如下图: 二阶贝塞尔曲线Android 提供方法:quadTo() 三阶贝塞尔曲线: 三阶贝塞尔曲线有两个控制点 P1,P2 和两个数据点 P0,P3。如下图:三阶贝塞尔

2017-03-26 16:19:15 908

原创 Android高级UI_Path小试牛刀<一>

我们知道Android中Canvas类对象可以进行绘制事物,里面有一个方法为canvas.drawPath方法,这个方法就是用来绘制我们的自定义Path对象。Path对象很有用,我们可以绘制一些特殊的动画效果,文字吸附效果等等。所以我们需要来学习下Path对象的使用。要想使用path做出漂亮的图片, 比如水波加载比如怎么使用path?以下是Path的基本操作的方法:第一类(直线与点的操作):lin

2017-03-26 16:18:25 679

原创 深渊巨坑!关于android-N后多语言切换

这里的多语言切换专指应用内的多语言切换,不涉及直接通过应用修改系统语言设置的功能。比如微信里面的我 -> 设置 -> 通用 -> 多语言 举个例子,假如 App 支持简体和繁体两种设置,默认界面为“中文简体”。如果用户选择“中文简体”,那么展示简体界面; 如果用户选择“中文繁体”,那么展示繁体界面; 如果用户选择“跟随系统”,那么如果系统语言设置是“中文简体”,则展示简体界面,如果系统语言设置

2017-03-24 15:05:39 948

原创 ActionBar的简易使用(一)

在android3.0以后,谷歌为了统一全局UI界面,推出的新导航栏功能,它标识了用户当前操作界面的位置,并提供了额外的用户动作、界面导航等一些通用功能。使得用户在使用任意大小的硬件以及任意软件都能自适应及方便操作。如下图所示:其中,1为actionbar的图标,2为两个actionBar按钮,3为overflow按钮由于Action Bar是在3.0以后的版本中加入的,如果想在2.x

2014-11-13 21:33:48 1518 1

空空如也

空空如也

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

TA关注的人

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