
android
石头程
这个作者很懒,什么都没留下…
展开
-
学Android两年半的感想
学习Android已经两年半了,感觉个人虽然在技术上有一定的积累,但还需要沉淀,因此,从现在开始,保持每周至少两篇博客,主要包括对Android的一些基础知识的总结和看法。虽然,这类博客多如牛毛,但谨通过这种方式作为提升和沉淀自己的一种方式,给后学这之路,同时和其他同仁交流。原创 2015-11-02 15:46:40 · 382 阅读 · 0 评论 -
Picasso源码完全解析(七)-- CleanupThread 取消请求
Picasso源码完全解析(七)-- CleanupThread 取消请求在开发过程中,我们常常有这样一种应用场景:在使用ListView或者RecylerView或者GridView时,为了提高性能,会采用item复用机制,即默认加载一屏的item,当item变得不可用的时候用来显示下一个将要显示的item,这样避免重复创建和销毁item。如果item用来显示图片,那么会造成这样一个问题原创 2017-05-17 11:37:22 · 757 阅读 · 3 评论 -
Picasso源码完全解析(一)--概述
##Picasso源码解析(一)--概述##Picasso是一个省事的图片加载框架,对于复杂的图片加载需求,常常像这样一行代码搞定: Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);很多在Android上图片加载的陷阱都被Picasso自动处理,比如:1.原创 2017-05-16 20:51:06 · 682 阅读 · 0 评论 -
Picasso源码完全解析(二)--Picasso实例的创建
## Picasso完全源码解析(二)--Picasso实例的创建 ##Picasso提供两种方式获得Picasso实例1. 全局的默认实例2. 通过Picasso.Builder自己构建Picasso实例由于Picasso是一个重量级的对象,它的创建涉及到很多资源和复杂的过程,比如它需要占用一部分内存作为缓存,需要开启回收线程等等,同时其销毁也比较复杂,频繁的创建原创 2017-05-16 20:53:21 · 605 阅读 · 0 评论 -
Picasso源码完全解析(三)--Request和Action的创建
## Picasso完全源码解析(三)--Request和Action的创建##使用Picasso可以加载链接、文件、Uri以及引用自带的res资源, public RequestCreator load(@Nullable Uri uri) { return new RequestCreator(this, uri, 0); }原创 2017-05-16 20:54:54 · 575 阅读 · 0 评论 -
Picasso源码完全解析(四)--Action分发和执行
Picasso完全源码解析(四)--Action分发和执行上节讲到 我们的每个图片请求最后生成一个Action被提交给Picasso执行,那么那么多的Action Picasso是怎么执行的呢?void enqueueAndSubmit(Action action) { Object target = action.getTarget(); if (target !=原创 2017-05-16 20:56:52 · 527 阅读 · 0 评论 -
Picasso源码完全解析(五)--图片的获取(BitmapHunter)
Picasso源码完全解析(五)--图片的获取(BitmapHunter)从上一节的分析可以知道,最终的Action是由dispatcher.performSubmit(action)执行的,看看这个方法的源码: void performSubmit(Action action) { performSubmit(action, true);}void performSu原创 2017-05-17 09:13:24 · 1095 阅读 · 0 评论 -
Picasso源码完全解析(六)--请求的取消、暂停、和恢复
Picasso源码完全解析(六)--请求的取消、暂停、和恢复Picasso为管理请求,提供了取消、暂停和恢复请求的方法。请求的取消请求的取消通常是通过picasso.cancel方法执行的,最终会调用这个方法: private void cancelExistingRequest(Object target) { checkMain(); Action原创 2017-05-17 09:14:55 · 1216 阅读 · 0 评论 -
Android动画详解(属性动画、视图动画和帧动画)
Android 动画框架Android提供了三种动画系统:Property Animation: 属性动画,3.0引入,比较灵活,能够作用于所有对象View Animation:视图动画,只能作用于view对象,使用比较简单。Drawable Animation:帧动画,通过连续的加载 Drawable资源来实现动画效果。属性动画(Property Animatio原创 2017-06-01 14:43:54 · 574 阅读 · 0 评论 -
Retrofit源码解析
Retrofit源码解析Retrofit概述Retrofi是对OkHttp的封装,简化了网络请求。使用Retrofi完成网络请求的一般步骤如下:使用Retrofit定义的 http注解,定义一个与Http API对应的java接口。实例化一个Retrofit实例调用Retrofit.create()方法,并将定义好的接口的类类型传递给这个方法,获得这个接口的原创 2017-07-30 22:30:25 · 510 阅读 · 0 评论 -
Android源码剖析之----系统服务的获取
我们先来看看Android的体系结构图:可以看到,在Framework层,最核心的功能是一些XXXManager,这些Manager有些是IBinder,有些不是IBinder但间接调用系统服务的IBInder实现功能。总之,这些XXXManager最终的功能是直接或者间接调用系统服务的IPC功能实现的。而系统的所有的服务都通过ServiceManager管理。我们知道,要原创 2016-01-29 17:09:24 · 344 阅读 · 0 评论 -
Android性能优化之渲染
Android性能优化之渲染篇APR 11TH, 2015 | COMMENTSGoogle近期在Udacity上发布了Android性能优化的在线课程,分别从渲染,运算与内存,电量几个方面介绍了如何去优化性能,这些课程是Google之前在Youtube上发布的Android性能优化典范专题课程的细化与补充。下面是渲染篇章的学习笔记,部分内容和前面的性能优化典范原创 2016-01-11 17:10:16 · 315 阅读 · 0 评论 -
Android性能优化总结
最近,看完了谷歌有关性能优化的专题课程,找到了Android性能优化的解决方案,同时也丰富了自己的知识。下面,通过渲染、内存、运算和电量几个方面对Android性能优化进行总结,和大家分享。原创 2016-01-11 17:16:36 · 320 阅读 · 0 评论 -
android里的进程和线程
Android的组件运行在各自的进程里,系统会为每个进程创建UI线程,负责事件的分发,UI组件的创建,界面的重绘等工作,同时Android实现UI线程为不安全的,不能在非UI线程里操作在UI线程里创建的UI组件。同时,进程的优先级影响着系统对进程的管理,因此,理解Android进程和线程是十分必要的原创 2015-11-02 15:31:49 · 431 阅读 · 0 评论 -
Android MotionEvent事件分发机制源码剖析
最近,心血来潮,花时间研究了以下Android 触摸事件的分发和传递机制,从源码的角度剖析了事件分发和处理的流程,加深了对Android View体系的理解.相信大家和我一样都有过这样的困惑: Android对事件是怎么传递和处理的?我们平时写的回调时如何调用的?其实,源码里面有很完全的介绍.原创 2016-01-19 18:21:14 · 603 阅读 · 0 评论 -
android 源码剖析之------Window的内部实现机制(添加、删除、更新)
今天,在做项目的过程中,实现了一个浮动窗口的功能,大致思路是这样的:通过实例化一个ImageButton并给这个Button设置监听,然后将这个Button传递给WindowManager的addView方法,在ListView滑动过程中,通过监听ListView的滑动状态,利用WindowManager的updateViewLayout方法,控制浮动窗口的显示和隐藏。功能实现很简单,但是,一直有原创 2016-01-19 20:55:51 · 1443 阅读 · 0 评论 -
Android源码剖析之------常见Window的创建过程
本文在之前所讲解的Window内部机制的基础上,进一步分析了Activity的Window的创建过程,即Activity的View同Window是如何进行关联,根本还是通过WindowManager完成的。原创 2016-01-19 22:40:09 · 347 阅读 · 0 评论 -
Android源码剖析之-------Handler机制详解
Handler是用来发送并处理消息的,是Android的消息机制的具体实现。一个Handler必须和一个Looper进行关联才能进行消息的发送和处理。Handler所完成的就是将一个操作从一个线程切换到与Handler关联的Looper所在的线程去执行。这个过程中,Looper扮演的是一个消息循环的角色。Looper里有一个MessageQueue,它是负责接收消息和取出消息,Handler负责的原创 2016-01-21 19:05:34 · 357 阅读 · 0 评论 -
android 支持的序列化-------Serializable和Parcelble
android 支持两种序列化:Serializable和Parcelble。前者是Java语言自带的序列化机制,通过读写文件实现对象的序列化和反序列化;后者是Android Os实现的序列化,它是通过读写内存来实现序列化,从而实现对象的传递。下面,就这两种方式详细说明。SerializableSerializable是Java提供的一个空接口。对象要想实现序列化,只需要如下:pu原创 2016-01-21 23:33:03 · 1191 阅读 · 0 评论 -
Android源码剖析之-----Activity的启动过程
在ActivityThread的创建过程中,介绍了关于ActivityThread类的创建过程。在main方法里主要完成了以下工作:为主线程创建Looper创建ActivityThread对象,在创建的时候,同时会实例化 mH和ApplicationThread对象。通过attach()方法,通知AMSActivityThread创建完毕初始化主线程的Handler加载原创 2016-01-23 20:23:11 · 349 阅读 · 0 评论 -
未来一个月的计划
毕业已经2年半了,马上就要三年了,羊年已逝,猴年在望,在这辞旧迎新的时候,也该回顾一下过去,畅想一下未来,写博客就是最好的方式。不知道当初是怎么选择了计算机这个专业,11年开始接触Java,12年开始接触Android,毕业之后也一直从事android开发工作。回想一下,挺庆幸自己当初选择了软件工程这个专业。同时,不知不觉,毕业已经2年半了,工作之后,觉得有点遗憾的是大学四原创 2016-01-25 16:23:54 · 1417 阅读 · 0 评论 -
Android性能优化典范
2015新年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个方面展开,Android的渲染机制,内存与GC,电量优化。下面是对这些问题和建议的总结梳理。0原创 2016-01-10 19:04:53 · 357 阅读 · 0 评论 -
Retrofit详解
Retrofit详解简介Retrofit是一个将Http API转化为Java接口,最终将接口转换为 callable 对象,并能执行同步和异步Http请求的Http Client。具体来讲,使用Retrofit的步骤包括:使用注解来定义Http API的Java接口。定义好接口之后,通过Retrofit实例生成接口实例通过调用接口实例的方法,获取Call对原创 2017-07-28 12:13:11 · 935 阅读 · 0 评论