自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android进阶三部曲 - 刘望舒

独立博客 http://liuwangshu.cn 公号:刘望舒

  • 博客(298)
  • 资源 (12)
  • 收藏
  • 关注

原创 Android深入理解JNI(二)类型转换、方法签名和JNIEnv

上一篇文章介绍了JNI的基本原理和注册,这一篇接着带领大家来学习JNI的数据类型转换、方法签名和JNIEnv。

2017-07-03 00:04:36 11624 1

原创 React Native组件(二)View组件解析

了解了RN的组件的生命周期后,我们接着来学习RN的具体的组件。View组件是最基本的组件,也是首先要掌握的组件,这一篇我们来学习View组件。

2017-06-27 10:57:46 5499

原创 设计模式(十六)原型模式

公众号有同学留言设计模式,才发现好久没有写设计模式了。关于创建型设计模式只差原型模式没写了,这一篇就来填补这个空缺。

2017-06-26 00:11:53 3023

原创 Android内存优化(三)避免可控的内存泄漏

内存泄漏向来都是内存优化的重点,它如同幽灵一般存于我们的应用当中,有时它不会现身,但一旦现身就会让你头疼不已。因此,如何避免、发现和解决内存泄漏就变得尤为重要。这一篇我们先来学习如何避免内存泄漏。

2017-06-21 00:12:44 4090 2

原创 Android深入理解JNI(一)JNI原理与静态、动态注册

JNI不仅仅在NDK开发中应用,它更是Android系统中Java与Native交互的桥梁,不理解JNI的话,你就只能停留在Java Framework层。这一个系列我们来一起深入学习JNI。

2017-06-19 11:39:21 23141 2

原创 React Native组件(一)组件的生命周期

React Native有很多组件比如Image、ListView等等,想要合理的使用组件,首先要先了解组件的生命周期。

2017-06-16 00:14:13 4329 2

原创 Android内存优化(二)DVM和ART的GC日志分析

在Java虚拟机(三)垃圾标记算法与Java对象的生命周期这篇文章中,提到了Java虚拟机的GC日志。DVM和ART的GC日志与Java虚拟机的日志有较大的区别,这篇文章就对DVM和ART的GC日志进行分析。

2017-06-13 00:10:00 7858 1

原创 Android深入理解Context(二)Activity和Service的Context创建过程

上一篇文章我们学习了Context关联类和Application Context的创建过程,这一篇我们接着来学习Activity和Service的Context创建过程。需要注意的是,本篇的知识点会和深入理解四大组件系列的部分文章的知识点相重合。

2017-06-12 00:08:56 4337

原创 React Native探索(五)使用fetch进行网络请求

React Native可以使用多种方式来请求网络,比如fetch、XMLHttpRequest以及基于它们封装的框架,fetch可以说是替代XMLHttpRequest的产物,这一节我们就来学习fetch的基本用法。

2017-06-07 00:13:56 11167 4

原创 Android内存优化(一)DVM和ART原理初探

要学习Android的内存优化,首先要了解Java虚拟机,此前我用了多篇文章来介绍Java虚拟机的知识,就是为了这个系列做铺垫。在Android开发中我们接触的是与Java虚拟机类似的Dalvik虚拟机和ART虚拟机,这一篇我们就来了解它们的基本原理。

2017-06-05 00:24:14 12247 4

原创 Android深入理解Context(一)Context关联类和Application Context创建过程

Context也就是上下文对象,是Android较为常用的类,但是对于Context,很多人都停留在会用的阶段,这个系列会带大家从源码角度来分析Context,从而更加深入的理解它。

2017-06-01 00:32:20 4457 2

原创 React Native探索(四)Flexbox布局详解

在Android开发中我们有很多种布局,比如LinearLayout和RelativeLayout,同样在React Native也有它的布局,这个布局就是Flexbox布局。在CSS、React Native和Android等都有它的身影。这一篇文章,我们就通过各种小例子来掌握React Native中的Flexbox布局。

2017-05-31 00:25:21 4212

原创 Java虚拟机(四)垃圾收集算法

在本系列上一篇文章中我讲到了垃圾标记算法,垃圾被标记后,GC就会对垃圾进行收集,垃圾收集有很多种算法,这篇文章就来介绍常用的垃圾收集算法的思想。

2017-05-23 00:55:35 2736 3

原创 Android深入四大组件(五)Content Provider的启动过程

Content Provider做为四大组件之一,通常情况下并没有其他的组件使用频繁,但这不能作为我们不去深入学习它的理由。关于Content Provider一篇文章是写不完的,这一篇文章先来介绍它的启动过程。

2017-05-22 01:09:50 5712 1

原创 React Native探索(三)组件的Props(属性)和State(状态)

在Android或者iOS开发中我们会用到很多控件,这些控件会有很多的属性、样式等等。同样的,React Native中的组件也有属性、样式和状态。

2017-05-17 13:35:53 3727 3

原创 Java虚拟机(三)垃圾标记算法与Java对象的生命周期

这一节我们来简单的介绍垃圾收集器,并学习垃圾标记的算法:引用计数算法和根搜索算法,为了更好的理解根搜索算法,会在文章的最后介绍Java对象在虚拟机中的生命周期。

2017-05-16 11:36:04 2951 2

原创 Android深入四大组件(四)广播的注册、发送和接收过程

我们接着来学习Android四大组件中的BroadcastReceiver,广播主要就是分为注册、接收和发送过程。建议阅读此文前请先阅读《Android深入理解四大组件系列》的文章,知识重复的部分,本文不再赘述。

2017-05-11 14:21:53 4130 4

原创 React Native探索(二)Atom+Nuclide安装、配置与调试

上一篇文章我们搭建了开发环境,并写了个Hello World。这一节我们来学习React Native的开发IDE:Atom+Nuclide的安装、配置与调试。本文所讲的内容只适用于Mac平台。

2017-05-08 12:12:12 6745 1

原创 Java虚拟机(二)对象的创建与OOP-Klass模型

在前一篇文章中我们学习了Java虚拟机的结构原理与运行时数据区域,那么我们大概知道了Java虚拟机的内存的概况,那么内存中的数据是如何创建和访问的呢?这篇文章会给你答案。

2017-05-04 11:43:18 5601 2

原创 React Native探索(一)环境搭建与Hello World(Windows/Mac)

目前关于React Native的教程很多,官方文档写的也不错,但是感觉大部分教程写的不是很清楚,导致我各种碰壁。因此我来写一个简洁的教程。本篇文章基于React Native 0.43,只适用于用Windows平台的Android开发者。

2017-05-02 12:39:52 4343 5

原创 Android深入四大组件(三)Service的绑定过程

我们可以通过调用Context的startService来启动Service,也可以通过Context的bindService来绑定Service,建议阅读此篇文章前请阅读《Android深入四大组件(二)Service的启动过程》这篇文章,知识点重叠的部分,本篇文章将不再赘述。

2017-04-28 11:37:00 3641

原创 Android深入四大组件(二)Service的启动过程

此前我们用较长的篇幅来介绍Android应用程序的启动过程(根Activity的启动过程),这一篇我们接着来分析Service的启动过程。建议阅读此篇文章前,请先阅读Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章。

2017-04-24 11:52:39 3642 2

原创 Java虚拟机(一)结构原理与运行时数据区域

本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关知识,Java虚拟机也并不是三言两语能够介绍完的,因此开了Java虚拟机系列,这一篇文章我们来学习Java虚拟机的结构原理与运行时数据区域。

2017-04-21 13:10:38 5505 4

原创 设计模式(十五)状态模式

建议在阅读本文前先阅读设计模式(十一)策略模式这篇文章,虽说状态模式和策略模式的结构几乎是相同的,但是它们所解决的问题是不同的,读完这两篇文章你就会有了答案。

2017-04-17 12:10:59 2790

原创 Android深入四大组件(一)应用程序启动过程

在此前的文章中,我讲过了Android系统启动流程和Android应用进程启动过程,这一篇顺理成章来学习Android 7.0的应用程序的启动过程。分析应用程序的启动过程其实就是分析根Activity的启动过程。

2017-04-06 14:01:30 7920 7

原创 Android绘制优化(二)布局优化

我们知道一个界面的测量和绘制是通过递归来完成的,减少布局的层数就会减少测量和绘制的时间,从而性能就会得到提升。当然这只是布局优化的一方面,那么如何来进行布局的分析和优化呢?本篇文章会给你一个满意的答案。

2017-03-27 11:18:05 3867 3

原创 Android应用程序进程启动过程(后篇)

在前篇中我们讲到了Android应用程序进程启动过程,这一篇我们来讲遗留的知识点:在应用程序进程创建过程中会启动Binder线程池以及在应用程序进程启动后会创建消息循环。

2017-03-21 00:54:49 4769

原创 Android应用程序进程启动过程(前篇)

在此前我讲过Android系统的启动流程,系统启动后,我们就比较关心应用程序是如何启动的,这一篇我们来一起学习Android7.0 应用程序进程启动过程,需要注意的是“应用程序进程启动过程”,而不是应用程序启动过程。关于应用程序启动过程,我会在后续系列的文章中讲到。希望阅读这篇文章前先阅读本文列出的相关文章,要不你一脸蒙蔽,就别怪我了。

2017-03-20 11:06:05 18398 4

原创 Android绘制优化(一)绘制性能分析

一个优秀的应用不仅仅是要有吸引人的功能和交互,同时在性能上也有很高的要求。运行Android系统的手机,虽然配置在不断的提升,但仍旧无法和PC相比,无法做到PC那样拥有超大的内存以及高性能的CPU,因此在开发Android应用程序时也不可能无限制的使用CPU和内存,如果对CPU和内存使用不当也会造成应用的卡顿和内存溢出等问题。因此,应用的性能优化对于开发人员有着更高的要求。Android性能优化分为很多种,比较常用的

2017-03-13 11:40:26 11121 1

原创 设计模式(十四)中介者模式

写了很多篇设计模式的文章,才发现没有讲关于设计模式的分类,那么这一篇就补上这一内容,顺便带来中介者模式的讲解。并与此前讲过的代理模式和外观模式做对比。

2017-03-06 12:31:56 6691 2

原创 算法(三)初等排序后篇[选择和冒泡排序]

根据上一篇文章讲到的插入排序和希尔排序,我们把选择排序的数组也分为已排序部分和未排序部分。在用图来讲解选择排序之前,我们要先了解选择排序的规则。

2017-03-02 12:42:23 2581 4

原创 Android系统启动流程(四)Launcher启动过程与系统启动流程

此前的文章我们学习了init进程、Zygote进程和SyetemServer进程的启动过程,这一篇文章我们就来学习Android系统启动流程的最后一步:Launcher的启动流程,并结合本系列的前三篇文章的内容来讲解Android系统启动流程。建议读这篇文章前要通读本系列的前三篇文章,否则你可能不会理解我在讲什么。

2017-02-23 13:59:38 25019 11

原创 算法(二)初等排序前篇[插入和希尔排序]

排序有很多种方法,有些方法实现起来很简单,但是效率较差,我们可以将这些排序的方法称之为初等排序。这篇文章我们就来学习初等排序中的插入排序和希尔排序。

2017-02-18 12:30:00 3268 2

原创 Android系统启动流程(三)解析SyetemServer进程启动过程

上一篇我们学习了Zygote进程,并且知道Zygote进程启动了SyetemServer进程,那么这一篇我们就来学习Android7.0版本的SyetemServer进程。

2017-02-15 12:08:59 8256 4

原创 Android系统启动流程(二)解析Zygote进程启动过程

上一篇文章我们分析了init进程,init进程中主要做了三件事,其中一件就是创建了Zygote进程,那么Zygote进程是什么,它做了哪些事呢?这篇文章会给你这些问题的答案。

2017-02-13 12:37:06 11511 1

原创 算法(一)时间复杂度

算法很重要,但是由于做移动开发并不经常用到,所以很多同学早就将算法打了个大礼包送还给了老师了,况且很多同学并没有学习过算法。这个系列就让对算法头疼的同学能快速的掌握基本的算法。过年放假阶段玩了会游戏NBA2K17的生涯模式,没有比赛的日子也都是训练,而且这些训练都是自发的,没有人逼你,从早上练到晚上,属性也不涨,但是如果日积月累,不训练和训练的人的属性值就会产生较大差距。这个突然让我意识到

2017-02-09 11:48:04 161811 37

原创 Android系统启动流程(一)解析init进程启动过程

作为“Android框架层”这个大系列中的第一个系列,我们首先要了解的是Android系统启动流程,在这个流程中会涉及到很多重要的知识点,这个系列我们就来一一讲解它们,这一篇我们就来学习init进程。

2017-02-07 11:29:48 41013 7

原创 设计模式(十三)抽象工厂模式

此前讲解过简单工厂模式和工厂模式,这一篇我们来学习工厂系列的最后一个模式抽象工厂模式,建议在阅读此文前,请先阅读[设计模式(四)简单工厂模式]

2017-02-06 13:26:06 2942

原创 设计模式(十二)享元模式

享元模式是结构型设计模式的一种,是池技术的重要实现方式,它可以减少应用程序创建的对象,降低程序内存的占用,提高程序的性能。

2017-02-05 13:31:41 4474 9

原创 Android系统架构与系统源码目录

技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用书籍中最有深度的一本,可以说是《Android开发艺术探索》的姊妹篇。在这本书的最后一章我会分析Android底层源码,但是毕竟是一本Android应用开发的书,对于底层源码阅读也只能带大家入个门。因此,在博客中我会新开一个“系统源码解析”的系列,该系列的开篇就是本篇文章。

2017-01-23 18:09:56 73202 27

MyTabLayout2

此前我们用HorizontalScrollView也实现了类似网易选项卡动态滑动效果 Android选项卡动态滑动效果 这里我们用TabLayout来实现这一效果。TabLayout是Android Design Support Library库中的控件。 Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个support库里面,Google给我们提供了更加规范的MD设计风格的控件。最重要的是,Android Design Support Library的兼容性更广,直接可以向下兼容到Android 2.2。

2015-12-27

MyTabLayout

这里我们用TabLayout来实现这一效果。TabLayout是Android Design Support Library库中的控件。 Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个support库里面,Google给我们提供了更加规范的MD设计风格的控件。最重要的是,Android Design Support Library的兼容性更广,直接可以向下兼容到Android 2.2。

2015-12-27

MySlideTabbar

本文会实现一个类似网易新闻(不说网易新闻大家可能不知道大概是什么样子)点击超多选项卡,选项卡动态滑动的效果。

2015-12-20

MoonToolbar2

对于已经被不大好用的Actionbar折磨的开发者来说,Toolbar的出现确实是一个好消息,Toolbar是应用的内容的标准工具栏,可以说是Actionbar的升级版,两者不是独立关系,要使用Toolbar还是得跟ActionBar有关系的。相比Actionbar Toolbar最明显的一点就是变得很自由,可随处放置,具体的使用方法和Actionbar很类似。

2015-12-04

MoonToolbar

对于已经被不大好用的Actionbar折磨的开发者来说,Toolbar的出现确实是一个好消息,Toolbar是应用的内容的标准工具栏,可以说是Actionbar的升级版,两者不是独立关系,要使用Toolbar还是得跟ActionBar有关系的。相比Actionbar Toolbar最明显的一点就是变得很自由,可随处放置,具体的使用方法和Actionbar很类似。

2015-12-02

MyBannerCsdn

做了很多的App,发现广告Banner非常的常用,在这里就总结一下我的做法

2015-12-01

MyNotification

Notification可以让我们在获得消息的时候,在状态栏,锁屏界面来显示相应的信息,很难想象如果没有Notification,那我们的qq和微信以及其他应用没法主动通知我们,我们就需要时时的看手机来检查是否有新的信息和提醒着实让人烦心,也体现出Notification重要性。这里会介绍三种Notification,分别是普通的Notification,折叠式Notification和悬挂式Notification。

2015-11-29

MyCardView2

android 5.0版本中新增了CardView, CardView继承自FrameLayout类,可以在一个卡片布局中一致性的显示内容,卡片可以包含圆角和阴影。也可以布局其他View。

2015-11-27

RecyclerView

有了ListView、GridView为什么还需要RecyclerView这样的控件呢?整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现更加丰富多样效果。 但是RecyclerView也有缺点和让人头疼的地方:设置列表的分割线时需要自定义,另外列表的点击事件需要自己去实现。

2015-11-25

MyRecyclerView

有了ListView、GridView为什么还需要RecyclerView这样的控件呢?整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现更加丰富多样效果。 但是RecyclerView也有缺点和让人头疼的地方:设置列表的分割线时需要自定义,另外列表的点击事件需要自己去实现。

2015-11-25

Gson免费下载(包含开发包,源码,文档)

json解析我们不陌生了,不过每次编写解析的代码时总是很头疼,一堆很无聊的代码,如果有50个接口那就得写50个相似的解析处理。其实谷歌和阿里很早就推出了解析json的工具包,谷歌的Json,阿里的FastJson,还有一个jackJson。有人说jackJson解析速度快,大数据时FastJson要比Json效率高,小数据时反之。不过我还是偏爱谷歌的Json,即使效率可能偏低,但是稳定性肯定没得说,FastJson和jackJson就不知道了。

2015-04-21

GSON免费下载

Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为串行化Java对象为JSON字符串,或反串行化JSON字符串成Java对象。

2015-04-21

空空如也

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

TA关注的人

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