自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android图片加载框架Glide 解析

本文是阅读郭大神的八篇Android图片加载框架最全解析后,根据自己的理解做的笔记,本篇基于 Glide3.7.0讲解。一、Glide简介Glide是一款由Bump Technologies开发的图片加载框架,使得我们可以在Android平台上以极度简单的方式加载和展示图片。二、Glide的基本用法Glide.with(this).load(url).asBitmap() //加载静态图.placeholder(R.drawable.loading)//加载过程中的占位图.er

2021-09-08 15:33:50 2020

原创 Android 图片 Bitmap 解析

一、简介Bitmap的主要使用:给ImageView设置背景当做画布来使用imageView.setImageBitmap(Bitmap bm); //给ImageView设置背景Canvas canvas = new Canvas(Bitmap bm); //当做画布来使用二、Bitmap 压缩加载BitmapBitmap在Android中指的是一张图片,可以是png格式也可以是jpg等其他常见的图片格式。加载一个图片,BitmapFactory类提供了四类方法:decod

2021-09-03 09:56:39 836

原创 Android 图片 Drawable介绍

一、简介Drawable表示一种可以在Canvas上进行绘制的抽象的概念,它有很多种,常见的如颜色和图片都可以是一个Drawable。其可以理解为:图像、它不全是图片,通过颜色也可以构造出各种各样的图片效果,它一般就是当做View的背景使用,他有两种方式,一种是通过XML,一种是通过代码的方式。优点使用简单,比自定义View的成本要低 非图片类型的Drawable占空间较小,不存在屏幕适配的问题。二、Drawable 的分类Drawable是一个抽象类,它是所有Drawable对象的

2021-08-26 10:51:43 759

原创 Android解析Window机制

一、window介绍什么是window什么是view树?例如你在布局中给Activity设置了一个布局xml,那么最顶层的布局如LinearLayout就是view树的根,他包含的所有view就都是该view树的节点,所以这个view树就对应一个window。Activity、popupWindow、Toast、dialog、menu都有自己的view树,分别对应不同的window view树是window的存在形式,window是view树的载体 window是view树的管理者,同时也是

2021-07-30 09:22:19 1666

原创 Android APK 的编译打包流程

编译打包流程图输入部分资源文件,res目录的各种资源如图片动画等等 AIDL接口文件 - 代码源文件 第三方资源包,分为两类:a.java类包(JAR\AAR),b.非Java类包(.so)具体步骤aapt工具编译res资源文件,把大部分xml文件编译成二进制文件(图片文件除外),同时生成R.Java文件和resources.arsc文件,里面保存了资源的ID和在APK中的路径。 如果项目中有使用AIDL,那么就会把.aidl文件编译成.java文件。 将所有.java文件(.

2021-07-15 11:28:15 155

原创 Android应用Context解析

一、Context简介Context是维持Android程序中各组件能够正常工作的一个核心功能类。一个Activity就是一个Context,一个Service也是一个Context。Android程序员把“场景”抽象为Context类,用户和操作系统的每一次交互都是一个场景。生动形象的理解Context在这里我给出一个可能不是很恰当的比喻,希望有助于大家的理解:一个Android应用程序,可以理解为一部电影或者一部电视剧,Activity,Service,Broadcast Receiver,

2021-07-13 12:20:14 187

原创 Android WMS的理解

一、WMS简介WMS(WindowManagerService)是一个重要的系统服务,用于窗口管理,由SystemService启动,发生异常时自动重启,直到系统关机时才能退出。在WMS没有运行之前,开机动画由BootAnimation直接通过OpenGL ES与SurfaceFlinger的配合来完成。二、WMS相关角色在《深入理解Android内核设计思想》一书中看到一个比喻非常好,整个界面就像由N个演员参与的话剧:SurfaceFling是摄像机,它只负责客观的捕捉当前的画面

2021-07-12 10:47:07 3976

原创 Android PMS的理解

一、PMS的作用Package Manage Service是Android 系统核心服务之一,主要负责各种APK的安装,卸载,优化和查询。二、PMS 启动流程简单的将其分为以下几个步骤SystemServer通过PMS的main方法启动PMS PMS构造方法中初始化Settings 扫描各个系统目录下APP相关信息具体步骤1.在SystemServer中启动PackageManagerService.main2.newPackageManagerService()..

2021-07-09 10:30:30 3760

原创 Android AMS的理解

一、AMS的概述AMS(ActivityManagerService)是Android中最核心的服务,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块相类似。AMS服务运行在system_server进程中,AMS由SystemServer的ServerThread线程创建。activity启动或停止通知AmS,Ams决定是否执行动作,activity的数量>20时,最早入栈的activity会被AmS给忘记,新加进来了acti..

2021-07-08 10:50:19 10359

原创 Activity的启动流程

点击图标——》Launcher进程向system_server进程发起startActivity请求——》system_server向zygote进程发送创建APP进程的请求——》ApplicationThread通过handler向主线程发送消息——》主线程创建Activity,并回调onCread()等。点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求; system_server进程接收到请求后,向zygote

2021-07-01 12:16:02 140

原创 Android系统启动流程

1、启动电源以及系统启动当电源键按下时引导芯片代码从预定义的地方(固化在ROM)开始执行。加载引导程序BootLoader到RAM中,然后执行。2、引导程序BootLoader引导程序BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行。3、Linux内核启动当内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置时,它首先在系统文件中寻找init.rc文件,并启动init进程。4、init进程启动当用..

2021-06-25 11:49:53 146

原创 Android动态权限

一、概述Google在 Android 6.0(API 23) 开始引入了权限申请机制,将所有权限分成了正常权限和危险权限。应用的相关功能每次在使用危险权限时需要动态的申请并得到用户的授权才能使用。二、权限分类...

2021-06-07 12:26:56 279

原创 Android中Socket通信,TCP、UDP

一、简介Socket定义:端口号拼接到IP地址即构成了套接字(Socket)。Socket的表示方法就是,在点分十进制的IP地址后面写上端口号,例如(127.0.0.1:8888)。OSI定义了网络互连的七层模型(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)。TCP/IP四层模型(链路层、网络层、传输层、应用层)socket 通信是基于TCP/IP 网络层上的一种传送方式,我们通常把TCP和UDP称为传输层。...

2021-05-28 11:47:22 787

原创 Android 动画总结 帧动画、补间动画、属性动画

一、Android 动画概述Android动画可以分为3类,帧动画(Frame Animation)、补间动画(Tweened Animation)、属性动画。其中帧动画和补间动画属于传统动画,Android3.0 之后出现的属性动画,所有补间动画的内容,都可以通过属性动画实现。二、帧动画帧动画是最容易实现的一种动画,这种动画更多的依赖于完善的UI资源,他的原理就是将一张张单独的图片连贯的进行播放,从而在视觉上产生一种动画的效果;有点类似于某些软件制作gif动画的方式。使用&lt.

2021-05-27 12:39:02 542

原创 JNI与NDK

一、JNI与NDK介绍JNI定义:Java Native Interface,即 Java本地接口作用:使得Java 与 本地其他类型语言(如C、C++)交互,即在 Java代码 里调用 C、C++等语言的代码 或 C、C++代码调用 Java 代码。注意:JNI是 Java 调用 Native 语言的一种特性,JNI 是属于 Java 的,与 Android 无直接关系。NDK定义:Native Development Kit,是 Android的一个工具开发包。作用:快速开发C、

2021-04-26 10:52:55 295

原创 Android性能优化

一、稳定性优化在Android应用开发中,影响稳定性的原因很多,比如内存使用不合理、代码异常场景考虑不周全、代码逻辑不合理等,都会对应用的稳定性造成影响。其中最常见的两个场景是:Crash 和 ANR,这两个错误将会使得程序无法使用。1、内存泄露当程序不再使用该内存,但这块内存没有释放,而产生的无用的内存消耗的时候就是内存泄露。内存泄露的场景单例的时候Context传的Activity,解决是尽量用MyApplication.getContext() 非静态内部类,内部类持有外部类的对

2021-04-25 12:07:48 163

原创 Android之架构模式MVC、MVP、MVVM

一、MVCActivity承担了Controller和View的工作,所有Controller和View没有解耦。Model主要负责网络请求,数据库处理,I/O等业务操作。M模型层(Model),针对业务模型,建立的数据结构和相关的类 V视图层(View),显示部分 C控制层(Controller),控制逻辑关系图各层承担的角色使用MVC时需注意MVC具有一定的分层,model彻底解耦,controller和view并没有解耦 层与层之间的交互尽量使用回调或者去使用消息机

2021-04-23 12:01:54 872

原创 Android AsyncTask的使用与解析

一、AsyncTask的特点AsyncTask是一个Android 已封装好的轻量级异步类,可以实现线程间的通信 属于抽象类,即使用时需实现子类 使用方便,不需使用 “任务线程(如继承Thread类) + Handler”的复杂组合 节省资源,采用线程池的缓存线程 + 复用线程,避免了频繁创建 & 销毁线程所带来的系统资源开销 提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.二、AsyncTask的核心方法三、Asyn..

2021-04-22 12:08:56 340

原创 java集合汇总

一、java集合继承关系图List是有序的集合,Set是无序的集合。Map是无序的键值对。常用集合的分类Collection 接口的接口 对象的集合(单列集合)├——-List 接口:元素按进入先后有序保存,可重复│—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全│—————-├ ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全│—————-└ Vector 接口实现类 数组, 同步, 线程安全,但效率低│

2021-04-21 11:19:26 98

原创 Java 多线程

一、线程的2种实现方式继承 Thread 类 实现 Runnable 接口二、线程的5种状态创建状态在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时它已经有了相应的内存空间和其他资源,但还处于不可运行状态。新建一个线程对象可采用Thread 类的构造方法来实现,例如 “Thread thread=new Thread()”。就绪状态新建线程对象后,调用该线程的 start() 方法就可以启动线程。当线程启动时,线程进入就绪状态。此时,线程将进入线程队列...

2021-04-16 11:42:44 60

原创 JAVA反射

一、定义JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。二、应用场景在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法。三、反射机制的相关类Class代表类的实体,在运行的Java应用程序中表示类和接口。..

2021-04-07 16:15:50 58

原创 强引用,软引用,弱引用和虚引用的区别与用法

概述Java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。强引用是最常用的,软引用应用的情况比较多,弱引用用的比较少,虚引用基本不用。1.强引用常用的引用都是强引用,如果一个对象具有强引用,GC绝不会回收它,当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随

2021-03-05 11:46:27 1971

原创 Android 屏幕适配

一、为什么要做屏幕适配由于Android系统的开放性,任何用户、开发者、OEM厂商、运营商都可以对Android进行定制,于是导致碎片化,包括Android系统碎片化(小米定制的MIUI、魅族定制的flyme、华为定制的EMUI),Android机型屏幕尺寸碎片化(5寸、5.5寸、6寸),Android屏幕分辨率碎片化(320x480、480x800、720x1280、1080x1920)。当出现碎片化时,就很容易出现同一元素在不同手机上显示不同的问题。所以屏幕适配使得某一元素在Android不同尺

2021-01-21 15:57:24 749 3

原创 RxJava2 的使用

一、RxJava2介绍RxJava2.0是非常好用的一个异步链式库,遵循观察者模式。应用场景所有的异步都可以用RxJava来做就可以了,尤其是复杂的场景,越是复杂的场景越能体现RxJava的好处。与Retrofit联用。二、RxJava2 的使用步骤1、创建被观察者Observable novel=Observable.create(new ObservableOnSubscribe<String>() { @Override public void sub.

2021-01-05 14:23:33 349

原创 Retrofit的使用

一、Retrofit简介Retrofit是当下最热门的Android网络请求库,它内部网络请求的工作,本质上是通过OkHttp完成,而Retrofit仅负责网络请求接口的封装。效率高,实现简单,运用注解和动态代理.。二、Retrofit的使用使用步骤1、创建业务请求接口public interface MoviceService { @GET("movie/top250") Call<MovieBean> getTop250(@Quer..

2021-01-04 16:03:34 138

原创 Okhttp的使用与解析

一、Okhttp 简介OkHttp是一个处理网络请求的开源框架。网络请求发展:HttpURLConnection—>Apache HTTP Client—>Volley—->okHttp二、Okhttp的使用Get请求//1 . 拿到OkHttpClient对象OkHttpClient client = new OkHttpClient();//2 . 构造Request对象Request request = new Request.Bui...

2020-12-30 17:59:42 377

原创 GitHub配置与git使用

一、操作步骤1、gitbub 官网注册用户并登录https://github.com/user: myNameemail: my@163.com2、gitbub 上新建仓库仓库项目名为: AsdDemo3、本地安装git 客户端4、下载项目到本地git clone https://github.com/myName/AsdDemo.git5、本地git配置git config --global user.name “myName”git config --global us.

2020-12-08 17:35:51 147

原创 Android 自定义View

一、相关类在介绍自定义View前,需要先了解相关的类ViewRootViewRoot对应于ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将ViewRootImpl对象和DecorView建立关联,这个过程可参看如下源码:root = new

2020-11-17 15:57:21 102

原创 View的事件分发机制与滑动

一、View基础知识什么是ViewView是一种界面层的控件的一种抽象,它代表了一个控件。ViewGroup也继承了View,这就意味着View本身就可以是单个控件也可以是由多个控件组成的一组控件,通过这种关系就形成了View树的结构。View的位置参数View的位置主要由它的四个顶点来决定,分别对应于View的四个属性:top、left、right、bottom,这些坐标都是相对于View的父容器来说的,因此它是一种相对坐标。top是左上角纵坐标,Left=getLeft() lef

2020-11-11 17:50:38 168

原创 RecyclerView的使用与缓存机制

一、RecyclerView 简介RecyclerView是Android 5.0推出的,是support-v7包中的新组件,它被用来代替ListView和GridView,并且能够实现瀑布流的布局,更加高级并且更加灵活,提供更为高效的回收复用机制,同时实现管理与视图的解耦合。二、RecyclerView的使用1、自定义RecyclerView.Adapter创建适配器类继承自RecyclerView.Adapter,泛型传入RecyclerView.ViewHolder类。创建内部类.

2020-11-03 16:58:13 270

原创 Android 布局和控件

一、Android七大布局共7种布局,其中LInearLayout、RelativeLayout、ConstraintLayout比较常用,FrameLayout偶尔会用,GridLayout、TableLayout很少用,absoluteLayout基本不用。线性布局(LInearLayout) 相对布局(RelativeLayout) 约束布局(ConstraintLayout)ConstraintLayout 可以解决多层嵌套的问题,功能更强大,性能更高效。帧布局(FrameLayo

2020-10-28 16:39:38 183

原创 Android Handler 解析

一、Handler的作用实现线程间通讯,一般用于主线程跟子线程之间的通信。可以解决主线程不能做耗时操作,子线程不能更新UI的问题。二、Handler的原理Handler发送的消息Message,存储到消息队列MessageQueue,由Looper关联线程并分发消息给Handler处理,回调消息到handlerMessage()。Handler机制中的四个对象Handler:负责发送消息及处理消息 Looper:消息循环器,不断的从消息队列中取出消息,并且给发送消息给Han.

2020-10-27 15:28:13 172

原创 Android四大组件—ContentProvider详解

一、ContentProvider 介绍定义ContentProvider是Android四大组件之一,其本质上是一个标准化的数据管道,它屏蔽了底层的数据管理和服务等细节,以标准化的方式在Android 应用间共享数据、数据交互,跨进程通信。原理ContentProvider的底层是采用 Android中的Binder机制具体请看文章图文详解 Android Binder跨进程通信的原理特点虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方.

2020-10-22 14:34:25 586

原创 Android四大组件—Broadcast Receive详解

一、Broadcast 介绍简介广播(Broadcast)是组件之间传递数据的一种机制,也是一种方式。作用传递数据,传递信息; 应用内或是应用之间传递数据,都可以使用广播。使用场景同一app内部的同一组件内的消息通信(单个或多个线程之间),建议使用Handler; 同一app内部的不同组件之间的消息通信(单个进程),推荐使用《Android各组件/控件间通信利器之EventBus》。; 同一app具有多个进程的不同组件之间的消息通信,推荐使用广播; 不同app之间的组件之间消息

2020-10-20 11:20:23 281

原创 Android四大组件—Service详解

一、Service介绍服务是Android中实现程序后台运行的解决方案,他非常适合是去执行那些不需要和用户交互而且还要长期运行的任务。服务的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另一个应用程序,服务仍然能够保持独立运行。不过需要注意的是,服务并不是运行在一个独立的进程当中,而是依赖于创建服务时所在的应用程序进程。当某个应用程序被杀掉时,所有依赖该进程的服务也会停止运行。二、Service的生命周期三、Service的两种状态 启动状态 当应...

2020-10-15 17:15:41 224

原创 Android四大组件—Activity详解

一、Activity介绍Activity是Android的四大组件之一,它提供屏幕,用户通过它与机器产生交互。二、Activity的生命周期onresume 与 onstart 的区别onStart 用户可见,但还没有获得焦点,用户还不能进行操作。onResume 界面可见,并获得焦点,用户可以进行操作了。Activity A 启动 Activity B 时的操作打印Activity_A onPause()......Activity_B onCreate()........

2020-10-10 10:33:11 502 1

原创 Android中Handler的使用与理解

Handler的使用与理解1. Handler的概念实现线程间通讯,一般用于主线程跟子线程之间的通信。2. Handler相关的类Message Handler MessageQueue Looper Thread 3.handler.sendMessage handler.post 4.Handler用作定时器5.handler.removeMessages

2017-08-18 18:10:08 398

xfire的JAR包

提供给XFIRE开发的JAR包,很郁闷搞个WEBSERVICE需要JAR包,找了半天

2009-10-05

空空如也

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

TA关注的人

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