7 IT界的吉祥物

尚未进行身份认证

前同程,现薄荷,『顾林海』公众号运营者

等级
TA的排名 1k+

Android性能优化实践

绘制优化绘制原理View的绘制流程有3个步骤,分别是measure、layout和draw,它们主要运行在系统的应用框架层,而真正将数据渲染到屏幕上的则是系统Native层的SurfaceFlinger服务来完成的。绘制过程主要由CPU来进行Measure、Layout、Record、Execute的数据计算工作,GPU负责栅格化、渲染。CPU和GPU是通过图形驱动层来进行连接的,图形驱动...

2019-05-27 19:22:01

职业生涯规划访谈,写给在校的你们

今天一位在校大学生邀请我在线做一个关于职业生涯规划的访谈,在此我将他提出的问题以及我个人的一些看法贴出,希望能给在校或是即将毕业的你们有所帮助。问:老师你好,就是我想问一下我们计算机专业的大学生,在课堂上学好必要的知识之外,在课余时间还应该去学习一些什么必要的技能吗?答:建议在校大学生八分精力放课内,剩下两分精力放课外,基础知识非常的重要,在学习的同时需要及时的输出,可以将学习到...

2019-05-07 21:25:01

2019年,智慧零售是如何影响零售行业?

智慧零售是在16年阿里云栖大会上,马云提出“新零售”这个概念后才开始存在的,马云在演讲中第一次提出了新零售的概念,马云说“未来的十年、二十年,没有电子商务这一说,只有新零售。”阿里巴巴是马云一手创立的,得益于电子商务在中国的快速发展,是中国最成功的的互联网公司之一,而马云能够断定未来没有电子商务的地位,说明他也确实深深体会到了新一轮变革的到来。新零售是以互联网为依托,但更注重运用大数据、人工智...

2019-05-06 22:32:18

寒冬下该如何破冰

专注学习的必要性,早期互联网还没这么发达的时候,我们想去学一门技术,资料的匮乏会迫使我们格外珍惜现有的资料,而不像现在互联网上资料的泛滥,造成一部分人东学学西学学。再加上互联网寒冬,自然就有一部分人产生焦虑、找不到工作等等情况,就我接触的一部分人,他们看到某某又出了什么课程,就会迫不及待的下单,但又不会静下心来去学习,好像买下这个课程就全懂似的,这是我比较讨厌的,既然花了钱又不去把它学完。很多...

2019-04-02 20:18:42

深入浅出换肤相关技术以及如何实现

温馨提示:阅读本文需要60-70分钟微信公众号:顾林海完成换肤需要解决两个问题:如何获取换肤的View,利用LayoutInflater内部接口Factory2提供的onCreateView方法获取需要换肤的View,我们从setContentView方法的具体作用来了解LayoutInflater.Factory2接口的作用,以具体源码进行分析,MainActivity代码如下:...

2019-02-20 17:45:09

深入浅出Service插件化原理

转载请标明出处:【顾林海的博客】本篇文章已授权微信公众号顾林海独家发布Service插件化的重点是保证它的优先级,需要一个真正的Service来实现,当启动插件Service时,就会先启动代理Service,当这个代理Service运行起来后,在它的onStartCommand等方法里面进行分发,执行插件Service的onCreate等方法,这种方案叫代理分发。也就是在启动插件...

2019-01-29 09:11:32

深入浅出Activity插件化相关原理

转载请标明出处:【顾林海的博客】本篇文章已授权微信公众号顾林海独家发布Activity的插件化解决的一个根本性问题就是插件中的Activity并没有在宿主的AndroidManifest.xml中进行注册,也就是说我们需要启动一个未注册的Activity,因此需要对Activity的启动过程有个了解。启动Activity时会请求AMS创建Activity,这里的AMS指的是Acti...

2019-01-25 23:45:52

深入浅出Service启动流程

转载请标明出处:【顾林海的博客】本篇文章已授权微信公众号顾林海独家发布Service启动方式有两种,一种是通过Context的startService启动Service,另一种是通过Context的bindService绑定Service,下面对这两种启动方式的启动流程进行详细的讲解。startService的启动流程通过startService方法启动Service会调用Con...

2019-01-12 11:52:09

深入浅出Android系统启动流程

转载请标明出处:【顾林海的博客】init进程启动过程init进程概述    Android系统基于Linux,init进程是Android系统中用户空间的第一个进程,进程号为1,init源代码在system/core/init目录下。既然init进程是Android系统用户空间的第一个进程,因此担负着非常重要的责任,主要负责以下两件事:解...

2019-01-03 17:38:09

Android之全面解析Retrofit网络框架封装库

转载请标明出处:【顾林海的博客】前言Retrofit是Square公司推出的一个HTTP的框架,主要用于Android和Java,Retrofit会将每一个HTTP的API请求变成一个Java的接口,使用起来非常方便,同时Retrofit又是一个RestfulHTTP的网络请求框架的封装。介绍与使用在上图中,我们会在应用层发起网络请求,同时请求会经过Retrofit这层,Retr...

2018-11-06 13:39:30

Android之全面解析OkHttp源码

转载请标明出处:【顾林海的博客】本平台的文章更新会有延迟,大家可以关注微信公众号-顾林海,更有Android、后端、Python、PHP、IOS以及ReactNative等等相关视频教程,如果大家想获取最新教程,请关注微信公众号,谢谢!前言OkHttp是目前非常火的网络库,支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接,连接池减少请求延时,透明的GZIP...

2018-10-27 15:38:49

Android之ActivityManagerService详解(APP启动过程)

转载请标明出处:【顾林海的博客】前言AMS(ActivityManagerService)的启动是在SystemServer进程中启动的,它的职责是用于和所有APP的四大组件进行通信,Activity的启动过程就是APP端与AMS端进行通信,首先理解的一点是APP端与AMS是在两个不同的进程中,因此APP端与AMS是通过跨进程通信的。从Launcher启动APPLauncher就是指...

2018-10-18 16:53:18

Android之加载外部dex

转载请标明出处:【顾林海的博客】想要了解插件化,首先得知道如何加载外部的dex文件,这里的插件APK会存放在主APP的assets目录中,用于模拟服务器下载插件。第一步:创建主项目和插件项目先创建我们的主项目,并在项目中创建一个插件依赖库,取名为pluginlibrary,主项目依赖pluginlibrary。主项目创建完毕后,接着创建插件项目,将项目中的app模块复制到主项目并重命...

2018-10-09 11:12:15

Android之Binder和AIDL原理

转载请标明出处:【顾林海的博客】前言插件化技术火热已久,为什么会有插件化,时势造英雄吧,随着移动互联网的快速发展,业务的飞速增长,如何在有限时间给用户提供高质量的APP,当线上出现各种BUG,如何快速修复并发布上线,插件化的意义也就在这里了。目前插件化解决方案分为两个方向,一是以张勇的DroidPlugin框架为代表的动态替换方案,对Android底层的各种类进行Hook,来达到加载插件...

2018-09-29 10:02:11

Android之EasyPermissions源码解析

转载请标明出处:【顾林海的博客】前言我们知道在Android中想要申请权限就需要在AndroidManifest配置文件中通过uses-permission标签设置申请的权限,通过这种方式申请权限固然方便,但在安全性方面却不高,比如开发者申请获取用户隐私的权限,这样用户在不知情的情况下获取到了用户的隐私,如何避免这种不安全的权限获取?从Android6.0开始,Googl...

2018-08-20 18:16:25

Android之LocalBroadcastManager源码解析

转载请标明出处:【顾林海的博客】前言广播想必大家都不陌生,日常开发中同一个APP中的多个进程之间需要进行传输信息,或是不同APP之间的消息通信,都可以使用广播来实现,学习广播时,我们知道广播有普通广播和系统广播,通过自定义广播接受者BroadcastReceiver,并复写onReceive方法,内部通过Binder机制向AMS(ActivityManagerService...

2018-08-06 14:10:25

Android之EventBus框架源码解析下(源码解析)

转载请标明出处:【顾林海的博客】register方法流程概要publicvoidregister(Objectsubscriber){Class<?>subscriberClass=subscriber.getClass();List<SubscriberMethod>subscri

2018-05-15 11:27:20

Android之EventBus框架源码解析上(单例模式)

转载请标明出处:【顾林海的博客】前言EventBus能够简化各组件间的通信,让我们的代码书写变得简单,能有效的分离事件发送方和接收方(也就是解耦的意思),能避免复杂和容易出错的依赖性和生命周期问题。关于它的使用方式,同学们可以查看相关文章。EventBus.getDefault().register(this);以上是EventBus的注册,很简单,通过getDefault...

2018-04-05 14:34:12

Android小知识-Fragment

转载请标明出处:【顾林海的博客】前言今天还是总结下Android中的小知识点Fragment,Fragment使用广泛,有自己的生命周期(必须依附Activity),动态灵活的加载到Activity中去,Android3.0引入,常用模式有Fragment+ViewPager。Fragment加载到Activity的两种方式添加Fragment到Activity的...

2018-02-27 11:58:36

Android之了解ThreadLocal

转载请标明出处:【顾林海的博客】前言很长时间没写博客,不是自己懒,而是在这段时间在思考要写什么,以及自己的发展方向,之前的自己很浮躁,总想表现什么,这其实对技术人来说是不好的,把心沉淀下来,找准方向,再一步步去实现,幸运的是自己又找到自我,这篇文章就讲讲一个小知识点ThreadLocal。强调ThreadLocal与多线程并发没有任何关系,ThreadLocal解决...

2018-02-25 09:36:09

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。