Android
文章平均质量分 60
A-Chen
这个作者很懒,什么都没留下…
展开
-
手动模拟Retrofit2 + OkHttp3的拦截器工作原理
模拟拦截器工作原理,加深对责任链模式的理解Request.javapublic class Request {String RequestParams="";}Response.javapublic class Response {String responseParams = “”;}定义拦截器的核心类Interceptor接口与RealInterceptorChainInt...原创 2019-10-13 21:42:48 · 304 阅读 · 0 评论 -
责任链模式的应用:Retrofit2 + OkHttp3 配置及Interceptor原理
Okhttp的Interceptor拦截器源码解析OkHttp的调用流程:在调用client.newCall(request)将会调用到RealCall.newRealCall(this, request, false);方法,之后将会调用到RealCall.getResponseWithInterceptorChain()函数,而在其中将进行拦截器链的构建。RealCall.java核心...原创 2019-10-13 21:34:56 · 416 阅读 · 0 评论 -
RxJava学习(Rxjava1.x)
RxJava:a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)非常简洁的异步操作以及链式调用。工作过程:事件产生、事件加工、事件订阅1.事件产生:1.1、cre...原创 2018-07-02 16:51:04 · 200 阅读 · 0 评论 -
Java内存管理
在Java中内存管理,引用分为四大类,强引用HardReference、弱引用WeakReference、软引用SoftReference和虚引用PhantomReference强引用HardReference: HardReference对象是即使虚拟机内存吃紧抛出OOM也不会导致这一引用的对象被回收弱引用WeakReference: 最容易被垃圾回收。GC发生时即被回收。 通...原创 2018-07-03 18:43:48 · 134 阅读 · 0 评论 -
深入理解HandlerThread
1.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.HandlerThread就是一...原创 2018-07-17 19:54:20 · 647 阅读 · 0 评论 -
深入源码解析Android中的Handler,Message,MessageQueue,Looper
转载:https://blog.csdn.net/iispring/article/details/47180325本文主要是对Handler和消息循环的实现原理进行源码分析,如果不熟悉Handler可以参见博文《 Android中Handler的使用》,里面对Android为何以引入Handler机制以及如何使用Handler做了讲解。概括来说,Handler是Android中引入的一种...转载 2018-07-18 11:31:32 · 123 阅读 · 0 评论 -
深入理解IntentService(HandlerThread的经典应用)
IntentService 简介public abstract class IntentService extends Service { .......}IntentService是一个抽象类,继承Service。IntentService因为是一个Service,在后台不会轻易被系统杀死。他能够在onHandleIntent中接收intent请求。然后在子线程中...原创 2018-07-18 20:31:26 · 305 阅读 · 0 评论 -
组件化遇到的问题
1.TransformException: java.util.zip.ZipException: duplicate entry: android/support/design/widget/CoordinatorLayout$1.class解决办法: your one of dependency has different version of android support l...原创 2018-08-30 17:26:33 · 773 阅读 · 0 评论 -
View的移动方式
View的移动方式View的移动方式View坐标系scrollTo()/scrollBy()setTranslationX/Y、setX/setY使用平移动画或者属性动画设置View的LayoutParams来移动ViewView的移动方式常见的View的移动方式有setX()/setY()、setTranslationX()/setTranslationY()、动画、scrollTo/scr...原创 2018-10-29 18:00:33 · 609 阅读 · 0 评论 -
搭建Nexus Maven 私有服务器(使用gradle脚本上传aar)
1.安装jdk1.8 下载链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 在~/.bash_profile配置环境export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home...原创 2018-04-03 13:16:44 · 793 阅读 · 0 评论 -
导入第三方项目因gradle引起的不能运行问题
Error:org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection cannot be cast to org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection Possible causes for this原创 2017-01-10 14:00:52 · 14448 阅读 · 1 评论 -
Android Studio在创建项目是一直处于building “project name”gradle project info的解决办法
定位一下gradle的版本以及存放位置。查看gradle版本:gradle -v 查看目录C:\Users\用户名.gradle\wrapper\dists\gradle-1.XX-all存放位置:C:\Users\用户名.gradle\wrapper\dists\gradle-1.XX-all\3jdgemv0iv8uqohg3kcp2o88r1\gradle-1.XX-all.zip知道了版本原创 2017-01-06 17:09:57 · 1167 阅读 · 0 评论 -
ActiveAndroid 管理数据库以及ActiveAndroid 如何管理boolean类型
适用于Android平台的轻量级ORM架构第一步配置我们的基本信息: 1 2 3 4 5 6 7 8 910manifest ...> application android:name="com.activeandroid.app.Application" ...> ...原创 2015-06-08 12:21:17 · 1253 阅读 · 0 评论 -
Android 线程池
Java为我们提供了ExecutorService线程池来优化和管理线程的使用 使用线程池管理线程的优点1、线程的创建和销毁由线程池维护,一个线程在完成任务后并不会立即销毁,而是由后续的任务复用这个线程,从而减少线程的创建和销毁,节约系统的开销2、线程池旨在线程的复用,这就可以节约我们用以往的方式创建线程和销毁所消耗的时间,减少线程频繁调度的开销,从而节约系统资源,提高系统吞吐量3、在执行大量异步原创 2016-02-19 11:37:24 · 254 阅读 · 0 评论 -
自定义ViewGroup---理解1
—–记录自定义View学习过程中的点点滴滴,学习自定义ViewGroup的目的是为了自定义控件1.自定义ViewGroup之前要理解AndroidFrame中View的绘制过程/** view的绘制过程: 当Activity获取焦点时,他将被要求绘制自己的布局(onResume中),Activity只需提供他布局的根节点。 绘制过程从布局的根节点开始,从根节点开始测量和绘制整原创 2016-02-29 18:06:06 · 449 阅读 · 0 评论 -
自定义ViewGroup---measureChildren
1.遍历所有的子view/** * 遍历所有的子view去测量自己(跳过GONE类型View) * @param widthMeasureSpec 从父容器传递给子容器的布局需求(宽) * @param heightMeasureSpec 从父容器传递给子容器的布局需求(高) */ protected void measureChildren(int原创 2016-02-29 21:34:07 · 1021 阅读 · 0 评论 -
知识点滴记录:onCreate()过程中获取View的width和Height为0
public class CarJumpActivity extends Activity { private ImageView iv1, iv2; private int[] location1, location2; private CarJumpView jumpview; @Override protected void onCreate(Bundle原创 2016-02-26 14:09:58 · 394 阅读 · 0 评论 -
View学习笔记(1)-Android控件架构
笔记来自Android群英传与Android开发艺术探究。Android中控件被分为两类:View、ViewGroup,每个控件都会在界面中占得一块矩形区域。ViewGroup控件作为父控件可以包含多个View控件,并管理其包含的View控件。其职责可定义为:给出子View建议的高和宽、测量模式以及决定子view的位置。(子view的高宽属性定义为warp_content时只有其自身才能计算出精确的原创 2016-06-06 11:56:00 · 279 阅读 · 0 评论 -
View学习笔记(2)-View的坐标系以及View的滑动1
笔记来自Android群英传与Android开发艺术探究。View的滑动本质来说就是移动一个view,改变当前所处的位置,他的原理和动画的实现非常相似,都是通过不断改变view的坐标来实现滑动效果。所以要实现view的滑动,需要监听用户的触摸事件,根据事件传入的坐标动态且不断改变view的坐标。Android窗口中的坐标系和触控事件 1.Android坐标系 获取坐标系中的点的位置: getL原创 2016-06-06 15:36:52 · 306 阅读 · 0 评论 -
Unsupported major.minor version 52.0
// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { repositories { jcenter() } dependencies { classpath 'com.an原创 2016-08-25 11:44:23 · 308 阅读 · 0 评论 -
Android Studio 出现 Gradle's dependency cache may be corrupt 错误分析
解决办法: 重新配置gradle路径。原创 2016-12-28 15:32:05 · 1170 阅读 · 0 评论 -
医疗项目:电话问诊,需要为电话按钮添加波纹扩散效果
package heshi.x_tools.activity;import android.app.Activity;import android.os.Bundle;import heshi.x_tools.R;import heshi.x_tools.widget.CustomWave;public class WaveActivity extends Activity { priva原创 2015-12-27 20:11:20 · 463 阅读 · 0 评论