Android
文章平均质量分 77
础础
这个作者很懒,什么都没留下…
展开
-
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 · 1928 阅读 · 0 评论 -
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 · 761 阅读 · 0 评论 -
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 · 1632 阅读 · 0 评论 -
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 · 144 阅读 · 0 评论 -
Android应用Context解析
一、Context简介Context是维持Android程序中各组件能够正常工作的一个核心功能类。一个Activity就是一个Context,一个Service也是一个Context。Android程序员把“场景”抽象为Context类,用户和操作系统的每一次交互都是一个场景。生动形象的理解Context在这里我给出一个可能不是很恰当的比喻,希望有助于大家的理解:一个Android应用程序,可以理解为一部电影或者一部电视剧,Activity,Service,Broadcast Receiver,原创 2021-07-13 12:20:14 · 168 阅读 · 0 评论 -
Android WMS的理解
一、WMS简介WMS(WindowManagerService)是一个重要的系统服务,用于窗口管理,由SystemService启动,发生异常时自动重启,直到系统关机时才能退出。在WMS没有运行之前,开机动画由BootAnimation直接通过OpenGL ES与SurfaceFlinger的配合来完成。二、WMS相关角色在《深入理解Android内核设计思想》一书中看到一个比喻非常好,整个界面就像由N个演员参与的话剧:SurfaceFling是摄像机,它只负责客观的捕捉当前的画面原创 2021-07-12 10:47:07 · 3937 阅读 · 0 评论 -
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 · 9689 阅读 · 0 评论 -
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 · 131 阅读 · 0 评论 -
Android系统启动流程
1、启动电源以及系统启动当电源键按下时引导芯片代码从预定义的地方(固化在ROM)开始执行。加载引导程序BootLoader到RAM中,然后执行。2、引导程序BootLoader引导程序BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行。3、Linux内核启动当内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置时,它首先在系统文件中寻找init.rc文件,并启动init进程。4、init进程启动当用..原创 2021-06-25 11:49:53 · 124 阅读 · 0 评论 -
Android动态权限
一、概述Google在 Android 6.0(API 23) 开始引入了权限申请机制,将所有权限分成了正常权限和危险权限。应用的相关功能每次在使用危险权限时需要动态的申请并得到用户的授权才能使用。二、权限分类...原创 2021-06-07 12:26:56 · 259 阅读 · 0 评论 -
Android 动画总结 帧动画、补间动画、属性动画
一、Android 动画概述Android动画可以分为3类,帧动画(Frame Animation)、补间动画(Tweened Animation)、属性动画。其中帧动画和补间动画属于传统动画,Android3.0 之后出现的属性动画,所有补间动画的内容,都可以通过属性动画实现。二、帧动画帧动画是最容易实现的一种动画,这种动画更多的依赖于完善的UI资源,他的原理就是将一张张单独的图片连贯的进行播放,从而在视觉上产生一种动画的效果;有点类似于某些软件制作gif动画的方式。使用<.原创 2021-05-27 12:39:02 · 510 阅读 · 0 评论 -
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 · 283 阅读 · 0 评论 -
Android性能优化
一、稳定性优化在Android应用开发中,影响稳定性的原因很多,比如内存使用不合理、代码异常场景考虑不周全、代码逻辑不合理等,都会对应用的稳定性造成影响。其中最常见的两个场景是:Crash 和 ANR,这两个错误将会使得程序无法使用。1、内存泄露当程序不再使用该内存,但这块内存没有释放,而产生的无用的内存消耗的时候就是内存泄露。内存泄露的场景单例的时候Context传的Activity,解决是尽量用MyApplication.getContext() 非静态内部类,内部类持有外部类的对原创 2021-04-25 12:07:48 · 135 阅读 · 0 评论 -
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 · 839 阅读 · 0 评论 -
Android AsyncTask的使用与解析
一、AsyncTask的特点AsyncTask是一个Android 已封装好的轻量级异步类,可以实现线程间的通信 属于抽象类,即使用时需实现子类 使用方便,不需使用 “任务线程(如继承Thread类) + Handler”的复杂组合 节省资源,采用线程池的缓存线程 + 复用线程,避免了频繁创建 & 销毁线程所带来的系统资源开销 提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.二、AsyncTask的核心方法三、Asyn..原创 2021-04-22 12:08:56 · 323 阅读 · 0 评论 -
强引用,软引用,弱引用和虚引用的区别与用法
概述Java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。强引用是最常用的,软引用应用的情况比较多,弱引用用的比较少,虚引用基本不用。1.强引用常用的引用都是强引用,如果一个对象具有强引用,GC绝不会回收它,当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随原创 2021-03-05 11:46:27 · 1934 阅读 · 0 评论 -
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 · 702 阅读 · 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 · 343 阅读 · 0 评论 -
Retrofit的使用
一、Retrofit简介Retrofit是当下最热门的Android网络请求库,它内部网络请求的工作,本质上是通过OkHttp完成,而Retrofit仅负责网络请求接口的封装。效率高,实现简单,运用注解和动态代理.。二、Retrofit的使用使用步骤1、创建业务请求接口public interface MoviceService { @GET("movie/top250") Call<MovieBean> getTop250(@Quer..原创 2021-01-04 16:03:34 · 128 阅读 · 0 评论 -
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 · 364 阅读 · 0 评论 -
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 · 131 阅读 · 0 评论 -
Android 自定义View
一、相关类在介绍自定义View前,需要先了解相关的类ViewRootViewRoot对应于ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将ViewRootImpl对象和DecorView建立关联,这个过程可参看如下源码:root = new原创 2020-11-17 15:57:21 · 91 阅读 · 0 评论 -
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 · 153 阅读 · 0 评论 -
RecyclerView的使用与缓存机制
一、RecyclerView 简介RecyclerView是Android 5.0推出的,是support-v7包中的新组件,它被用来代替ListView和GridView,并且能够实现瀑布流的布局,更加高级并且更加灵活,提供更为高效的回收复用机制,同时实现管理与视图的解耦合。二、RecyclerView的使用1、自定义RecyclerView.Adapter创建适配器类继承自RecyclerView.Adapter,泛型传入RecyclerView.ViewHolder类。创建内部类.原创 2020-11-03 16:58:13 · 247 阅读 · 0 评论 -
Android 布局和控件
一、Android七大布局共7种布局,其中LInearLayout、RelativeLayout、ConstraintLayout比较常用,FrameLayout偶尔会用,GridLayout、TableLayout很少用,absoluteLayout基本不用。线性布局(LInearLayout) 相对布局(RelativeLayout) 约束布局(ConstraintLayout)ConstraintLayout 可以解决多层嵌套的问题,功能更强大,性能更高效。帧布局(FrameLayo原创 2020-10-28 16:39:38 · 173 阅读 · 0 评论 -
Android Handler 解析
一、Handler的作用实现线程间通讯,一般用于主线程跟子线程之间的通信。可以解决主线程不能做耗时操作,子线程不能更新UI的问题。二、Handler的原理Handler发送的消息Message,存储到消息队列MessageQueue,由Looper关联线程并分发消息给Handler处理,回调消息到handlerMessage()。Handler机制中的四个对象Handler:负责发送消息及处理消息 Looper:消息循环器,不断的从消息队列中取出消息,并且给发送消息给Han.原创 2020-10-27 15:28:13 · 156 阅读 · 0 评论 -
Android四大组件—ContentProvider详解
一、ContentProvider 介绍定义ContentProvider是Android四大组件之一,其本质上是一个标准化的数据管道,它屏蔽了底层的数据管理和服务等细节,以标准化的方式在Android 应用间共享数据、数据交互,跨进程通信。原理ContentProvider的底层是采用 Android中的Binder机制具体请看文章图文详解 Android Binder跨进程通信的原理特点虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方.原创 2020-10-22 14:34:25 · 553 阅读 · 0 评论 -
Android四大组件—Broadcast Receive详解
一、Broadcast 介绍简介广播(Broadcast)是组件之间传递数据的一种机制,也是一种方式。作用传递数据,传递信息; 应用内或是应用之间传递数据,都可以使用广播。使用场景同一app内部的同一组件内的消息通信(单个或多个线程之间),建议使用Handler; 同一app内部的不同组件之间的消息通信(单个进程),推荐使用《Android各组件/控件间通信利器之EventBus》。; 同一app具有多个进程的不同组件之间的消息通信,推荐使用广播; 不同app之间的组件之间消息原创 2020-10-20 11:20:23 · 262 阅读 · 0 评论 -
Android四大组件—Service详解
一、Service介绍服务是Android中实现程序后台运行的解决方案,他非常适合是去执行那些不需要和用户交互而且还要长期运行的任务。服务的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另一个应用程序,服务仍然能够保持独立运行。不过需要注意的是,服务并不是运行在一个独立的进程当中,而是依赖于创建服务时所在的应用程序进程。当某个应用程序被杀掉时,所有依赖该进程的服务也会停止运行。二、Service的生命周期三、Service的两种状态 启动状态 当应...原创 2020-10-15 17:15:41 · 201 阅读 · 0 评论 -
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 · 485 阅读 · 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 · 376 阅读 · 0 评论