Android进阶
文章平均质量分 80
Spark_Yuan
本博客迁移到 http://sparkyuan.me/
展开
-
Android异步消息机制Handler详解,源码剖析(API 23)
Android的UI是线程不安全的,也就是说在子线程中操作主线程(UI线程)程序就会崩溃。想在子线程中更新UI就需要用到异步操作机制。Android的异步操作主要有两种,AsyncTask和Handler。AsyncTask的详细讲解和源码分析在我的另一篇博客中进行了详细的讲解,本篇就来讲解一下Handler的用法与源码分析。基本用法在Activity中有一个Button和一个Edit原创 2015-11-02 12:56:13 · 1682 阅读 · 0 评论 -
Android中AsyncTask基本用法与源码分析(API 23)
Android的UI是线程不安全的,想在子线程中更新UI就必须使用Android的异步操作机制,直接在主线程中更新UI会导致程序崩溃。 Android的异步操作主要有两种,AsyncTask和Handler。AsyncTask是一个轻量的异步类,简单、原创 2016-03-23 22:01:59 · 2239 阅读 · 1 评论 -
一个特别适合新手练习的Android小项目——每日一妹纸
介绍当前版本V 1.2刚开始学习Android的时候,主要就是学习了一些Activity的生命周期,各种View和Layout的使用,SQLite等零散的知识点,这些东西市面上任何一本Android的入门书籍都会覆盖,但是学习完这些之后就有些迷茫了,不知道下一步该学一些什么?如果你也正好处于这个状态不妨看看这个开源项目。自己走过一些弯路,所以写了一个这样的App,希望可以对学习Android的新手有原创 2016-03-02 22:42:36 · 19593 阅读 · 10 评论 -
Android中View的事件分发机制——Android开发艺术探索笔记
点击事件的事件分发就是对MotionEvent事件的分发过程,当一个MotionEvent产生了以后,系统需要把这个事件传递给一个具体的View,而这个传递的过程就是分发的过程。原创 2016-02-25 15:32:10 · 3844 阅读 · 2 评论 -
ViewRoot,DecorView,MeasureSpec和View的工作原理——Android开发艺术探索笔记
ViewRoot,DecorView,MeasureSpec和View的工作原理。View的绘制流程是从ViewRoot的performTraversals方法开始的,它经过measure、layout和draw三个过程才能最终将一个View绘制出来,其中measure用来测量View的宽和高,layout用来确定View在父容器中的放置位置原创 2016-03-01 18:17:13 · 3521 阅读 · 0 评论 -
Android中View的滑动冲突——Android开发艺术探索笔记
相信开发Android的人都会有这种体会:从网上下载的demo运行的好好的,但是只要出现了滑动冲突,Demo就无法正常工作了。但是不用担心,解决滑动冲突有固定的模式,常见的有内部拦截和外部拦截两种,只要按照这个模式来就可以顺利解决。本文会涉及到View事件分发原创 2016-02-29 16:50:07 · 3123 阅读 · 9 评论 -
Android中的属性动画(Property Animation)——Android开发艺术探索笔记
最早出现在Android 3.0 中,和之前的Animation框架相比,Animator更加的灵活并且具有更多的功能,官方推荐使用Animator代替Animation。在3.0之前可以使用nineoldandroids来实现相同的效果。原创 2016-03-08 21:48:34 · 2030 阅读 · 0 评论 -
一个规范的自定义View——Android开发艺术探索笔记
如何定义一个规范的自定义View原创 2016-03-03 13:58:08 · 2724 阅读 · 4 评论 -
Android中MVP模式与MVC模式比较(含示例)
MVP介绍MVP模式(Model-View-Presenter)是MVC模式的一个衍生。主要目的是为了解耦,使项目易于维护。Model 依然是业务逻辑和实体模型View 经常由Activity实现,包含Presenter的引用。所要做的就是当有交互时,调用Presenter里的对应方法。Presenter 负责完成View于Model间的交互,从Model里取数据,返回给View处理好的数据。原创 2016-01-19 14:55:46 · 8935 阅读 · 9 评论 -
Android中AIDL详解
原文链接http://sparkyuan.me/2016/03/11/AIDL/ 转载请注明出处介绍Android Interface Definition Language (AIDL), Android接口定义语言。系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信Interprocess communication (IPC)。AIDL就是解决这个问题的。 阅原创 2016-02-10 12:12:22 · 3956 阅读 · 0 评论 -
Android中IntentFilter匹配规则详解——Android开发艺术探索笔记
启动Activity的方式分为两种,显示和隐式调用。显示调用很简单,直接指明要启动的Activity就可以了,这里主要介绍一下隐式调用。隐式调用需要Intent能够匹配目标组件的IntentFilter中所设置的过滤信息。只有一个Intent同时匹配action,category和data才算匹配成功。原创 2016-02-06 14:51:30 · 4466 阅读 · 0 评论 -
Activity在异常情况下的生命周期——Android开发艺术探索笔记
原文链接http://sparkyuan.me转载请注明出处Activity在异常情况下的生命周期关于Activity正常情况下的生命周期请参考这篇文章http://blog.csdn.net/l664675249/article/details/48895903,本文主要讲解Activity在异常情况下的生命周期。情况1:资源相关的系统配置发生改变资源相关的系统配置发生改变,举个栗子。当前Acti原创 2016-02-05 16:08:32 · 2558 阅读 · 0 评论 -
Android的线程和线程池
在Java中默认情况下一个进程只有一个线程,也就是主线程,其他线程都是子线程,也叫工作线程。Android中的主线程主要处理和界面相关的事情,而子线程则往往用于执行耗时操作。线程的创建和销毁的开销较大,所以如果一个进程要频繁地创建和销毁线程的话,都会采用线程池的方式。Android原创 2016-03-25 16:04:06 · 1374 阅读 · 2 评论 -
Android中View的弹性滑动——Android开发艺术探索笔记
原文链接 http://sparkyuan.me/ 转载请注明出处介绍弹性滑动也就是渐进式滑动,实现弹性滑动的方法有很多,但是他们都有一个共同的思想:将一次大的滑动分成若干次小的滑动并在一段时间内完成。本文主要介绍三种弹性滑动方式,Scroller、动画和Handler。本文中的“滑动”是指View内容的滑动而非View本身位置的改变。示例点击屏幕任意地方,手指与屏幕接触时,触发ACTION_DOW原创 2016-02-24 17:05:35 · 4136 阅读 · 0 评论 -
从源码的角度理解四大组件的工作过程——Android开发艺术探索笔记
系统对四大组件的过程进行了很大程度的封装,日常开发中并不需要了解底层的工作原理,那么研究这些原理的意义在哪里呢?如果你想在技术上更进一步,那么了解一些系统的工作原理是十分必要的,也是开发人员日后成长为高级工程师所必备的技术能力。Android作为一个优秀的基于Linux操作系统,其内部一定原创 2016-03-15 10:26:33 · 2674 阅读 · 1 评论 -
Android安全机制
Android系统是基于Linux内核开发的,因此,Android系统不仅保留和继承了Linux操作系统的安全机制,而且其系统架构的各个层次都有独特的安全特性。 Linux内核安全机制Android的Linux内核包含了强制访问控制机制和自主访问控制机制。强制访问控制机原创 2016-04-05 15:08:10 · 1880 阅读 · 0 评论 -
利用Window和WindowManager实现悬浮窗效果——Android开发艺术探索笔记
Window表示一个窗口的概念,在某些特殊的时候,比如你需要在桌面或者锁屏上显示一些类似悬浮窗的东西时候就需要用到Window。Window是一个抽象类,Window的实现类是PhoneWindow。Window的具体实现位于WindowManagerService中,WindowManager和WindowManagerService的交互是一个IPC过程。Android中所有的视图都是通过Window来呈现的,不原创 2016-03-10 21:02:34 · 10702 阅读 · 5 评论 -
从Android源码到apk——apk打包过程
Android程序是怎么从源码变成可以安装使用的apk的 流程官方版详细版上面就是一个关于构建过程的一个典型的流程图。aapt(Android Asset Packaging Tool)给你的Activity提供所需的资源文件,如 AndroidManifest.xml,XML原创 2016-04-01 16:29:47 · 3064 阅读 · 0 评论 -
Android中View的绘制流程详解
View的绘制流程从根节点(DecorView)开始,自上而下,每个View的绘制流程分为三个部分,Measure,Layout,Draw。原创 2015-10-18 00:59:30 · 901 阅读 · 0 评论 -
Android布局优化经验总结
布局优化的目的是为了制作出高效、可复用的UI。 本文主要是对博主在平时开发的过程中关于布局经验的一个总结,觉得还有些用处,记录下来分享给大家。HierarchyViewerHierarchyViewer用来查看布局的层次,可以在sdk/tools下面找到,也可以通过Android Device Moniter打开。在部分手机上因为系统版本没有开放查看布局的权限,所以Hierarch原创 2015-10-22 14:50:24 · 988 阅读 · 1 评论 -
Android中使用Serializable和Parcelable实现序列化详解(含实例)
Android中实现序列化有两种方式,一种是使用Serializable另一种就是Parcelable了。Serializable本身就是JavaSE支持的,Parcelable是Android特有的,效率比Serializable高,据统计一般情况下能快10倍左右!但是Parcelable不能用在需要数据永久储存的情况,比如存到本地文件中,Parcelable不能保证在外界有变化的时候数据的原创 2015-10-25 14:12:24 · 8316 阅读 · 0 评论 -
Android网络通信必备神器Volley详解——自定义RequestQueue
上一篇文章讲解了如何使用Volley.newRequestQueue来新建一个默认的RequestQueue,本篇文章将要讲解的是新建一个RequestQueue的具体过程,从而可以新建一个自定义的RequestQueue。设置网络和缓存RequestQueue需要网络和缓存两部分才能工作。BasicNetwork提供基于HTTP的网络传输,DiskBaseCache提供具有内存索引的on原创 2015-11-12 10:47:05 · 2035 阅读 · 0 评论 -
Android网络通信必备神器Volley详解——发送一个标准的Request
Volley主要支持一下几种Request1. StringRequest:确定一个URL,获得返回的原始字符串。2. ImageRequest:确定一个URL,获得一个图片。3. JsonObjectRequest和JsonArrayRequest: 确定一个URL,获得JSON对象或者数字。请求一个图片使用ImageRequestImageView mI原创 2015-11-12 14:48:31 · 1044 阅读 · 0 评论 -
Android网络通信必备神器Volley详解——初识Volley
简介Volley是Google开发和维护的一个网络通信开源库,具有方便、并发、快速的特点。但是Volley并不适合大文件下载或者流操作,因为在解析数据的时候Volley是把所有的response都放在内存里的。对于大文件下载可以用DownloadManager。下载Volley使用git下载git clone https://android.googlesource.com原创 2015-11-05 17:27:47 · 1365 阅读 · 0 评论 -
Android网络通信必备神器Volley详解——实现一个自定义的Request(以Gson为例)
虽然Volley已经提供了对于String,图片,JSON,Request的解析,但是总会有些数据不属于以上三种的,这时候就需要我们来自己实现的一个Request来解析我们需要的数据。实现一个自定义的Request很简单:1. 继承Request,T代表你要解析的类型,比如服务器返回的response是一个String,那么就要继承Request2. 实现parseNetworkRes原创 2015-11-15 10:24:00 · 1983 阅读 · 0 评论 -
开源项目9GAG源码解析与Material改造(一)
开源项目9GAG源码解析与Material改造(一)原创 2015-11-25 17:15:24 · 2550 阅读 · 0 评论 -
开源项目9GAG源码解析与Material改造(二)
开源项目9GAG源码解析与Material改造(二)原创 2015-11-26 18:41:56 · 1563 阅读 · 0 评论 -
开源项目9GAG源码解析与Material改造(三)
前面两篇文章分别讲解了9GAG中的UI布局和网络通信两个部分,本文重点讲解项目的最后一个部分——数据缓存,在APP的使用过程中好像感觉不到数据缓存的存在,但是如果没有数据缓存的话,项目的运行速度,耗电,流量等方面就会差很多。数据的缓存分为两个方面,一个是文本的缓存,一个是图片的缓存,下面分开进行讲解。文本9GAG的缓存策略是把请求的数据存入到本地数据库,每次展示的时候先查看本地的数据库有没有要展示的原创 2015-11-29 22:44:33 · 2079 阅读 · 0 评论 -
Android最新动画框架完全解析(一)—— Animator(Property Animation)
Animator最早出现在Android 3.0 中,和之前的Animation框架相比,Animator更加的灵活并且具有更多的功能,官方推荐使用Animator代替Animation。 使用Animator前需要先了解几个属性:Duration:动画播放时间Time interpolation:属性值随着时间的改变情况,比如线性增长或者先快后慢Repeat count:动画重复播放次数原创 2015-12-07 13:05:45 · 2877 阅读 · 0 评论 -
关于Android Studio里的Gradle,你所需要知道的都在这里了
前言你是不是有这种感觉,每当你使用Android Studio的时候,总会被她的优雅和便捷深深的吸引,但是一旦打开build.gradle文件就有一种想死的冲动,这尼玛都是什么啊,老子看不懂啦(ノಠ益ಠ)ノ彡┻━┻ ,不要着急,这篇文章就是来解救你的,看完这篇文章,你的种种疑问都会迎刃而解,从此与Android Studio过上快了幸福的生活。(大雾→_→)Gradle介绍Gradle是一个先进的b原创 2016-02-06 23:45:24 · 16401 阅读 · 4 评论 -
Android中常见IPC方法总结——Android开发艺术探索笔记
IPC (Interprocess communication)跨进程通信,是指在两个进程之间交换数据的过程。多进程通信一般分为两种情况。第一种,一个应用因为自身的需要采用多进程实现,比如某些模块由于特殊原因需要运行在单独的进程中。第二种情况,当前应用需要获得其它应用的数据,由于是两个应用,所以必须采用跨进程的方式。下面就对常用的IPC方法做一个总结。原创 2016-02-12 18:14:12 · 2047 阅读 · 3 评论 -
Android最新动画框架完全解析(二)——Transitions Framework(Transitions 框架)
前面一篇文章讲解了Android动画Animator,但是不知道你有没有发现,前面讲解的所有的动画都是针对某一Object来进行的,虽然我们可以对整个Layout添加动画效果,但这是先把整个layout看成一个整体,再对这个整体添加动画效果。当我们想同时对多个Object添加动画效果时又该怎么做呢?先来看一下效果为什么要使用Transitions:ViewGroup级别的动画效果只需确定动画的开原创 2015-12-06 16:12:08 · 2521 阅读 · 2 评论 -
Android中使用UncaughtExceptionHandler来处理未捕获的异常
使用UncaughtExceptionHandler来处理未捕获的异常 所有的App都会发生crash,本文讲解的是如何采集crash信息以供后续开发处理这类问题。基本思路当crash发生时,系统会调用UncaughtExceptionHandler的uncaughtExce原创 2016-03-28 16:33:11 · 1846 阅读 · 1 评论