自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一片枫叶的专栏

让坚持成为一种习惯。

  • 博客(140)
  • 资源 (3)
  • 收藏
  • 关注

原创 Android产品研发(十一)-->应用内跳转Scheme协议

这里的scheme是一种页面内跳转协议,主要用于支持一下几种场景:- 服务器下发跳转路径,客户端根据服务器下发跳转路径跳转相应的页面;- H5页面点击锚点,根据锚点具体跳转路径App端跳转具体的页面;- App端收到服务器端下发的PUSH通知栏消息,根据消息的点击跳转路径跳转相关页面

2016-06-15 23:02:30 37401 8

原创 Android产品研发(十)-->尽量不使用静态变量保存数据

转载请标明出处:一片枫叶的专栏上一篇文章中我们讲解了Android中的几种常见网络协议:xml,json,protobuf等,以及各自的优缺点,一般而言主要我们的App涉及到了网络传输都会有这方面的内容,具体可根据项目的需求确定各自的网络传输协议。而本文讲解的其实并不是一个技术方面,而是一个android产品研发过程中的技巧:尽量不使用静态变量保存核心数据。而本文中将要介绍的是App

2016-06-13 18:34:37 17860 17

原创 Android产品研发(九)-->App网络传输协议

转载请标明出处:一片枫叶的专栏上一篇文章中我们讲解了App的数据统计,其主要分为两种:使用第三方服务统计和自身实现数据统计。一般而言我们使用第三方统计服务已经可以很好的满足我们的也无需求了,只是部分数据敏感性App,可能自身实现数据统计服务是一个更好的选择。而本文中将要介绍的是App端的网络传输协议。那么这里首先需要明确一点的是什么是网络传输协议呢?好吧,这里首先套用一段百度百科的定义:

2016-06-08 20:02:29 22151 5

原创 Android产品研发(八)-->App数据统计

上一篇文章中我们介绍了android社区中很火的热修复功能,主流的热修复原理上其实分为两种,一种是通过利用dex的加载顺序实现热修复功能,一种是通过native层实现指针替换实现热修复功能,两种各有利弊可以根据自身产品的需要选择不同的方案。而文本将要介绍一下android产品中另一项基础功能-数据统计。App数据统计的意义在于通过统计用户的行为方式有针对性的更新展示算法,根据用户的行为习惯更新

2016-06-07 19:30:35 13639 2

原创 Android产品研发(七)-->Apk热修复

上一篇文章中我们讲解了App的数据统计,其主要分为两种:使用第三方服务统计和自身实现数据统计。一般而言我们使用第三方统计服务已经可以很好的满足我们的也无需求了,只是部分数据敏感性App,可能自身实现数据统计服务是一个更好的选择。而本文中将要介绍的是App端的网络传输协议。那么这里首先需要明确一点的是什么是网络传输协议呢?好吧,这里首先套用一段百度百科的定义: 网络传输协议或简称为传送协

2016-06-05 18:49:30 14479 4

原创 Android产品研发(六)-->Apk混淆

本文主要讲解Apk的混淆,这里的混淆分为两种代码混淆和资源文件混淆。实际的产品研发中为了防止自己的劳动成果被别人窃取,混淆代码能有效防止apk文件被反编译,进而查看源代码。说来惭愧,作为互联网创业公司的我们也确实对竞品Apk反编译研究过,如果Apk混淆之后确实对理解源码的业务流程造成了困扰,这也从侧面说明了Apk混淆的重要性

2016-06-04 17:50:33 17214 3

原创 Android产品研发(五)-->多渠道打包

国内众多android开发环境有众多的应用市场,产品存在着不同渠道统计的需求,为此android开发人员需要为每个应用市场发布一个安装包,这是一件很苦逼的事,更换成android studio之后自带的编译工具gradle其实已经可以实现多渠道打包的功能了;下面主要简单介绍一下gradle如何实现的多渠道打包。gradle多渠道打包; 美团对渠道打包; 第三方多渠道打包;(一)在and

2016-06-03 20:15:37 18317 4

原创 Android产品研发(四)-->减小Apk大小

随着移动技术的深入发展,各种炫酷效果的更新,在我们追求UI与UE的同时一个不如忽视的问题逐渐暴露出来,那就是apk文件越来越大,可能有的童鞋会说现在都是wifi环境,apk文件增大几M不是什么大不了的问题,这其实也是有一定道理的,但是作为开发人员的我们这绝不是我们认为可以忽略这个问题的理由。优化Apk大小也是优化我们App体验的一个重要方面,虽然可能它不是那么的重要。那么到底是那些原因让我们的Apk

2016-06-02 18:05:32 17717 7

原创 Android产品研发(三)-->基类Activity

在实际的android产品研发中,一般的我们在写Activity的时候都会继承于一个基类Activity,该Activity是所有的Activity的基类。在该基类中我们主要用于重写一些共有的逻辑。好处是显而易见的对于一些Activity的共有逻辑我们不必要在每个Activity中都重新写一遍,只需要在基类Activity中写一遍就好了

2016-06-01 21:03:10 14924 25

原创 Android产品研发(二)-->启动页优化

上一篇文章中我们介绍加单说明了一下android的编码规范,这里我是强烈建议大家在团队合作中约定编码规范的,哪怕是一个并不是十分规范的规范总比没有规范好得多,尤其是团队产品的研发,对产品的持续迭代过程中你会越发的意识到编码规范对产品迭代的好处,当然了,这里并不是要求大家一定按照文中给出的编码规范作为团队中使用的编码规范,而是希望大家在团队合作中能够约定出自身的编码规范,哪怕其并不是十分的规范。

2016-05-31 16:31:17 16094 7

原创 Android产品研发(一)-->实用开发规范

前面一系列的文章中我们主要讲解了Android系统中的一些源码流程,而从本文开始讲解一下android产品中经常需要使用的技术,方法,实践等等。 这里暂时大概列一下产品研发中常见的方法技术等: 1.android产品研发之代码规范 2.android产品研发之启动页优化 3.android产品研发之而本文中主要讲解的是对Android产品优化之启动页优化。最近观看友盟统计发现App

2016-05-30 21:10:23 19394 11

原创 Android源码解析(三十)-->触摸事件分发流程

前面一篇文章中我们分析了App返回按键的分发流程,从Native层到ViewRootImpl层到DocorView层到Activity层,以及在Activity中的dispatchKeyEvent方法中分发事件,最终调用了Activity的finish方法,即销毁Activity,所以一般情况下假如我们不重写Activity的onBackPress方法或者是onKeyDown方法,当我们按下并抬起

2016-05-29 15:59:06 12386 3

原创 Android源码解析(二十九)-->应用程序返回按键执行流程

从这篇文章中我们开始分析android系统的事件分发流程,其实网上已经有了很多关于android系统的事件分发流程的文章,奈何看了很多但是印象还不是很深,所以这里总结一番。android系统的事件分发流程分为很多部分:- Native层 --> ViewRootImpl层 --> DecorView层 --> Activity层 --> ViewGroup层 --> View层

2016-05-27 23:13:30 15194 1

原创 Android源码解析(二十八)-->电源开关机按键事件流程

和截屏按键、HOME按键的处理流程类似,电源按键由于也是系统级别的按键,所以对其的事件处理逻辑是和截屏按键、HOME按键类似,不在某一个App中,而是在PhoneWindowManager的dispatchUnhandledKey方法中。所以和前面两篇类似,这里我们也是从PhoneWindowManager的dispatchUnhandledKey方法开始我们今天电源开关机按键的事件流程分析。

2016-05-25 23:39:05 16953 1

原创 Android源码解析(二十七)-->HOME事件流程

上一篇文章中我们介绍了android系统的截屏事件,事件的处理逻辑不是在App中执行而是在PhoneWindowManager中执行,而本文我们现在主要讲解android系统中HOME按键的事件处理,和截屏事件类似,这里的HOME按键应该都是系统级别的按键事件监听,所以其处理事件的逻辑也应该和截屏事件处理流程类似,HOME按键的处理逻辑也是在PhoneWindowManager的dispatchU

2016-05-23 23:43:43 18706

原创 Android源码解析(二十六)-->截屏事件流程

今天这篇文章我们主要讲一下Android系统中的截屏事件处理流程。用过android系统手机的同学应该都知道,一般的android手机按下音量减少键和电源按键就会触发截屏事件(国内定制机做个修改的这里就不做考虑了)。那么这里的截屏事件是如何触发的呢?触发之后android系统是如何实现截屏操作的呢?带着这两个问题,开始我们的源码阅读流程。我们知道这里的截屏事件是通过我们的按键操作触发的,所以这

2016-05-22 16:59:59 13836 3

原创 Android源码解析(二十五)-->onLowMemory执行流程

上篇文章中我们分析了Activity的onSaveInstanceState方法执行时机,知道了Activity一旦执行了onStop方法就会执行onSaveInstanceState方法,具体的信息,可以参见onSaveInstanceState方法执行时机:http://blog.csdn.net/qq_23547831/article/details/51464535 这里我们分析一下Act

2016-05-22 00:41:41 13520 2

原创 Android源码解析(二十四)-->onSaveInstanceState执行时机

我们已经分析过Activity的启动流程,从中也分析了Activity的生命周期。而其中有一个生命周期方法:onSaveInstanceState方法,今天我们主要讲解一下onSaveInstanceState方法的执行时机。 可能部分同学对Activity的onSaveInstanceState方法不是特别熟悉,这里我们简单介绍一下。onSaveInstanceState方法是Activity的

2016-05-20 22:51:13 30282 11

原创 Android源码解析(二十三)-->Android异常处理流程

前面的几篇文章都是讲解的android中的窗口显示机制,包括Activity窗口加载绘制流程,Dialog窗口加载绘制流程,PopupWindow窗口加载绘制流程,Toast窗口加载绘制流程等等。整个Android的界面显示的原理都是类似的,都是通过Window对象控制View组件,实现加载与绘制流程。这篇文章休息一下,不在讲解Android的窗口绘制机制,穿插的讲解一下Android系统的异

2016-05-13 22:52:44 16048

原创 Android源码解析(二十二)-->Toast加载绘制流程

前面我们分析了Activity、Dialog、PopupWindow的加载绘制流程,相信大家对整个Android系统中的窗口绘制流程已经有了一个比较清晰的认识了,这里最后再给大家介绍一下Toast的加载绘制流程。其实Toast窗口和Activity、Dialog、PopupWindow有一个不太一眼的地方,就是Toast窗口是属于系统级别的窗口,他和输入框等类似的,不属于某一个应用,即不属于某

2016-05-11 23:39:44 11334

原创 Android源码解析(二十一)-->PopupWindow加载绘制流程

在前面的几篇文章中我们分析了Activity与Dialog的加载绘制流程,取消绘制流程,相信大家对Android系统的窗口绘制机制有了一个感性的认识了,这篇文章我们将继续分析一下PopupWindow加载绘制流程。在分析PopupWindow之前,我们将首先说一下什么是PopupWindow?理解一个类最好的方式就是看一下这个类的定义,这里我们摘要了一下Android系统中PopupWindo

2016-05-10 23:29:21 10453

原创 Android源码解析(二十)-->Dialog取消绘制流程

上几篇文章中我们分析了Dialog的加载绘制流程,也分析了Acvityi的加载绘制流程,说白了Android系统中窗口的展示都是通过Window对象控制,通过ViewRootImpl对象执行绘制操作来完成的,那么窗口的取消绘制流程是怎么样的呢?这篇文章就以Dialog为例说明Window窗口是如何取消绘制的。有的同学可能会问前几篇文章介绍Activity的加载绘制流程的时候为何没有讲Activ

2016-05-04 21:27:32 13007 1

原创 Android源码解析(十九)-->Dialog加载绘制流程

其实Android系统中所有的显示控件(注意这里是控件,而不是组件)的加载绘制流程都是类似的,包括:Dialog的加载绘制流程,PopupWindow的加载绘制流程,Toast的显示原理等,上一篇文章中,我说在介绍了Activity界面的加载绘制流程之后,就会分析一下剩余几个控件的显示控制流程,这里我打算先分析一下Dialog的加载绘制流程。

2016-05-02 00:20:22 25921 3

原创 Android源码解析(十八)-->Activity布局绘制流程

这篇文章是承接上一篇文章来写的,大家都知道Activity在Android体系中扮演者一个界面展示的角色,通过上一篇文章的分析,我们知道Activity是通过Window来控制界面的展示的,一个Window对象就是一个窗口对象,而每个Activity中都有一个相应的Window对象,所以说一个Activity对象也就可以说是一个窗口对象,而Window只是控制着界面布局文件的加载过程,那么界面布局

2016-05-01 00:28:13 19707 1

原创 Android源码解析(十七)-->Activity布局加载流程

好吧,终于要开始讲讲Activity的布局加载流程了,大家都知道在Android体系中Activity扮演了一个界面展示的角色,这也是它与android中另外一个很重要的组件Service最大的不同,但是这个展示的界面的功能是Activity直接控制的么?界面的布局文件是如何加载到内存并被Activity管理的?android中的View是一个怎样的概念?加载到内存中的布局文件是如何绘制出来的?

2016-04-30 00:09:33 23656 2

原创 Android源码解析(十六)-->应用进程Context创建流程

今天讲讲应用进程Context的创建流程,相信大家平时在开发过程中经常会遇到对Context对象的使用,Application是Context,Activity是Context,Service也是Context,所以有一个经典的问题是一个App中一共有多少个Context?所以这个问题的答案是Application + N个Activity + N个Service。还有就是我们平时在使用Contex

2016-04-27 22:55:59 10711 1

原创 Android源码解析之(十五)-->Activity销毁流程

继续我们的源码解析,上一篇文章我们介绍了Activity的启动流程,一个典型的场景就是Activity a 启动了一个Activity b,他们的生命周期回调方法是: onPause(a) –> onCreate(b) –> onStart(b) –> onResume(b) –> onStop(a) 而我们根据源码也验证了这样的生命周期调用序列,那么Activity的销毁流程呢?它的生命周期

2016-04-24 16:29:25 20464 4

原创 Android源码解析之(十四)-->Activity启动流程

好吧,终于要开始讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等,首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍: An activity represents a single screen

2016-04-23 19:17:31 48094 16

原创 Android源码解析之(十三)-->apk安装流程

上一篇文章中给大家分析了一下android系统启动之后调用PackageManagerService服务并解析系统特定目录,解析apk文件并安装的过程,这个安装过期实际上是没有图形界面的,底层调用的是我们平时比较熟悉的adb命令,那么我们平时安装apk文件的时候大部分是都过图形界面安装的,那么这种方式安装apk具体的流程是怎样的呢?下面我们就来具体看一下apk的具体安装过程,相信大家都知道如果我们想

2016-04-22 19:23:43 14799 4

原创 Android源码解析之(十二)-->系统启动并解析Manifest的流程

最近有同学问我关于Manifest何时被系统解析的问题,正好也分析到这一块了,索性这一章就讲解一下android系统何时解析Manifest吧,这里的Manifest指的是android安装文件apk中的androidManifest.xml文件是何时被解析的。 大家应该都知道,Android系统启动之后,我们就可以在一个应用中打开另一个从未打开过的应用,或者是在一个应用中发送广播,如果另外一个

2016-04-21 10:11:17 12633 7

原创 Android源码解析之(十一)-->应用进程启动流程

在android guide中有这样的一段关于android应用程序进程的描述:By default, every application runs in its own Linux process. Android starts the process when any of the application's components need to be executed, then shuts

2016-04-14 21:15:01 12384 1

原创 Android源码解析之(十)-->Launcher启动流程

Launcher程序就是我们平时看到的桌面程序,它其实也是一个android应用程序,只不过这个应用程序是系统默认第一个启动的应用程序,这里我们就简单的分析一下Launcher应用的启动流程。不同的手机厂商定制android操作系统的时候都会更改Launcher的源代码,我们这里以android23的源码为例大致的分析一下Launcher的启动流程。通过上一篇文章,我们知道SystemSe

2016-04-10 20:16:24 18773 7

原创 Android源码解析之(九)-->SystemServer进程启动流程

上面一文中我们讲过android系统中比较重要的几个进程:init进程,Zygote进程,SystemServer进程已经各种应用进程,其中Zygote进程是整个android系统的根进程,包含SystemServer进程已经各种应用进程在内的进程都是通过Zygote进程fork出来的,具体可参见:http://blog.csdn.net/qq_23547831/article/details/51

2016-04-09 17:40:39 20003 6

原创 Android源码解析之(八)-->Zygote进程启动流程

大家都知道android系统的Zygote进程是所有的android进程的父进程,包括SystemServer和各种应用进程都是通过Zygote进程fork出来的。Zygote(孵化)进程相当于是android系统的根进程,后面所有的进程都是通过这个进程fork出来的,而Zygote进程则是通过linux系统的init进程启动的,也就是说,android系统中各种进程的启动方式init进程 –>

2016-04-09 14:42:03 12104 3

原创 Android源码解析之(七)-->LruCache缓存类

android开发过程中经常会用到缓存,现在主流的app中图片等资源的缓存策略一般是分两级,一个是内存级别的缓存,一个是磁盘级别的缓存。作为android系统的维护者google也开源了其缓存方案,LruCache和DiskLruCache。从android3.1开始LruCache已经作为android源码的一部分维护在android系统中,为了兼容以前的版本android的support-

2016-04-09 11:54:50 5736 1

原创 Android源码解析之(六)-->Log日志

首先说点题外话,对于想学android framework源码的同学,其实可以在github中fork一份,具体地址:https://github.com/android/platform_frameworks_base 这里面基本都是android framework层的源码了。而且最近发现了一个比较不错的github插件:OctoTree,它 是一个浏览器插件,它可以让你在Github 看代码

2016-03-23 14:53:28 7688 8

原创 Android源码解析之(五)-->IntentService

什么是IntentService?简单来说IntentService就是一个含有自身消息循环的Service,首先它是一个service,所以service相关具有的特性他都有,同时他还有一些自身的属性,其内部封装了一个消息队列和一个HandlerThread,在其具体的抽象方法:onHandleIntent方法是运行在其消息队列线程中,废话不多说,我们来看其简单的使用方法:定义一个IntentS

2016-03-22 21:39:23 7829 2

原创 Android源码解析之(四)-->HandlerThread

HandlerThread是个什么东西?查看类的定义时有这样一段话:Handy class for starting a new thread that has a looper. The looper can then be used to create handler classes. Note that start() must still be called.意思就是说:这个类的作用是创建一

2016-03-20 16:04:07 8253

原创 Android源码解析之(三)-->异步任务AsyncTask

android的异步任务体系中还有一个非常重要的操作类:AsyncTask,本文主要解析AsyncTask的的使用与源码。首先我们来看一下AsyncTask的基本使用:class MAsyncTask extends AsyncTaskInteger, Integer, Integer> { @Override protected void onPreE

2016-03-20 14:47:43 8682 6

原创 Android源码解析之(二)-->异步消息机制

目前已经有许多针对Handler的解析文章,本文主要是针对自己学习android源码的过程。(一)Handler的常规使用方式public class MainActivity extends AppCompatActivity { public static final String TAG = MainActivity.class.getSimpleName();

2016-03-04 16:39:06 14349 7

apk安装文件

apk

2016-05-04

git for window

git客户端,git for windows 2.6 64位

2015-11-24

andbase jar包

andbase jar包,android开发框架android的jar

2014-11-20

空空如也

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

TA关注的人

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