- 博客(30)
- 收藏
- 关注
原创 Android 进程间通信(IPC)-上
什么是IPC?IPC全称Inter-Process Communication,含义为进程间通信,又叫跨进程通信,是指两个进程之间进行数据交互的过程。在学习IPC之间我们要先区分进程和线程的区别以及了解多进程。进程:是系统进行资源分配和调用的独立单位,在PC和移动设备上指一个程序或者一个应用。线程:线程是CPU调度的最小单元,一个进程中可以包含一个或多个线程而多进程在Android中是指一个应用中存在多个进程的情况,我们可以通过给四大组件(Activity、Service、BoardcastRe
2020-06-18 16:07:43 229
原创 Android性能优化
一、Android的性能优化方法布局优化布局优化的核心思想是尽量减少布局文件的层级,布局文件的层级减少了,也就意味着Android绘制时的工作量减少了,那么程序性能自然就提高了。主要做法有以下几点:删除布局中无用的控件和层级有选择的使用性能较低的ViewGroup,例如:RelativeLayout。能用LinearLayout代替就不用RelativeLayout。因为RelativeLayout的功能比较复杂,它的布局过程需要花费更多的cpu时间。FrameLayout和LinearLay
2020-06-16 13:38:52 173
原创 Handler原理解析
一、Android消息机制Android的消息机制主要是指Handler的运行机制,Handler是Android消息机制的上层接口,在Android开发中,我们可以通过Handler轻松的将一个任务切换到Handler所在的线程中去执行。可以作为线程间的一种通信方式,也常用来更新UI。举个????:当我们需要在子线程中进行耗时的I/O操作,可能是读取文件或者访问网络等,当耗时操作完成时,我们需要在UI上做一些改变,由于Android中子线程不能直接访问UI控件,否则会触发异常,这个时候我们就可以通过H
2020-06-15 23:12:52 210
原创 MVC、MVP、MVVM
一、MVCMVC的全称是Model - View - Controllor,其中:Model:模型层,负责对数据的存储和处理View:视图层,负责数据的展示Controllor:控制器:负责对数据的接收和触发事件的接收和传递在Android中,View层一般由XML布局文件充当;在Model层中我们会进行一些数据处理的工作,例如网络数据请求,数据库操作等;Controllor层通常由Activity、Fragment充当,并在其中进行界面、数据相关的业务处理,主要起到的作用就是解耦,将View
2020-06-14 17:55:18 166
原创 Java 强引用、弱引用、软引用、虚引用
一、强引用(StrongReference)Object sample = new Object();强引用是最常见的一种引用,如果一个对象有强引用,那么GC绝对不会回收它。当内存不足时,JVM宁愿抛出OOM也不愿意随意回收强引用的对象,如果强引用不使用时,需要显式的置空或者让其超出对象的生命周期范围从而使GC能够进行回收,比如Vector类的clear方法中就是通过将引用赋值为null来实现清理工作的: /** * Removes the element at the specifi
2020-06-05 16:33:43 126
原创 Android 内存泄露
一、 java内存分配策略Java 程序运行时的内存分配策略有三种,分别是静态分配,栈式分配,和堆式分配,他们对应的内存空间主要是以下三种:静态存储区(方法区):主要存放静态数据、全局 static 数据和常量。这块内存在程序编译时就已经分配好,并且在程序整个运行期间都存在。栈区:当方法被执行时,方法体内的局部变量都在栈上创建,并在方法执行结束时这些局部变量所持有的内存将会自动被释放。因为栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。堆区:又称动态内存分配,
2020-06-04 19:47:49 123
原创 java 反射原理
反射设计背景反射是为了能够动态的加载一个类,动态的调用一个方法,动态的访问一个属性等动态要求而设计的。它的出发点就在于JVM会为每个类创建一个java.lang.Class类的实例,通过该对象可以获取这个类的信息,然后通过使用java.lang.reflect包下得API以达到各种动态需求。反射的初衷不是方便你去创建一个对象,而是让你在写代码的时候可以更加灵活,降低耦合,提高代码的自适应能...
2019-12-27 15:28:30 151
原创 java枚举与注解
枚举什么是枚举枚举(Enum)是在Java 5中添加的新的类型,技术上来讲,由于enum是一个类,一个enum可以有构造方法和方法。如果有构造方法,那必须是私有的。如果一个enum定义了枚举值之外的其他内容,枚举值必须在其他内容之前定义,并且最后的枚举值用一个分号结束。枚举的使用创建枚举enum Letter{ A,B,C,D}创建枚举需要使用到关键字 enum,标识符 ...
2019-12-26 14:45:31 207
原创 java 类的加载
类的加载当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并...
2019-12-24 15:29:21 156
原创 java 线程通信
前文:java 线程与进程基础、java 锁、java 线程池线程通信在java 线程与进程基础中我们讲过进程同步,而进程同步问题中有一个非常典型的生产者-消费者问题:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产...
2019-12-19 18:08:04 99
原创 java 线程池
线程池基本概念为什么会有线程池?在实际开发中,我们通过开启多个线程去提高应用程序的使用率,让系统和程序达到最佳效率,但是我们知道,每次创建和销毁一个线程都是要消耗系统资源的,线程少时这不是问题,但当线程数达到一定数量时就会耗尽系统CPU和内存资源,也会造成GC频繁回收和停顿,影响系统的性能,所以线程池就应运而生了。线程池的作用?线程池就是提前创建若干个线程,如果有任务需要处理,...
2019-12-19 15:42:57 109
原创 java 线程与进程基础
基础进程定义:进程就是正在运行的程序,是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。资源管理器中的一个应用就是一个进程。引入进程是为了使多个程序可以并发的执行,以提高系统的资源利用率和吞吐量。状态 就绪状态:进程已处于准备运行的状态,即进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行。运行状态:进程正在处理机上运行。在单处理机环...
2019-12-18 17:10:11 158
原创 java 数据结构详解
前文 :数据结构基础常见集合Collection接口Collection派生出三个子接口,Set代表不可重复的无序集合、List代表可重复的有序集合、Queue是java提供的队列实现。Collection提供了很多的基础方法,供它的子类调用:int size(): 获取元素个数boolean isEmpty():个数是否为零boolean contains(Object ele...
2019-12-17 18:09:16 1286 1
原创 java 数据结构基础
常用数据结构数组无序数组:优点:查询快,知道索引的情况下可以快速存取缺点:删除慢,大小固定有序数组:优点:比无序数组查找快缺点:删除和插入慢,大小固定栈优点:提供后进先出的存取方式缺点:存取其他项很慢队列优点:提供先进先出的存取方式缺点:存取其他项很慢补充:单队列(单队列就是常见的队列, 每次添加元素时,都是添加到队尾,存在“假溢出”的问题也就是明明有位置...
2019-12-17 14:28:53 218
原创 java 绑定机制
什么是绑定?把一个方法与其所在的类/对象 关联起来叫做方法的绑定。绑定分为静态绑定(前期绑定)和动态绑定(后期绑定)。静态绑定在程序运行前就已经知道方法是属于那个类的,在编译的时候就可以连接到类的中,定位到这个方法。在Java中,final、private、static修饰的方法以及构造函数都是静态绑定的,不需程序运行,不需具体的实例对象就可以知道这个方法的具体内容。动态绑定在程序...
2019-12-17 10:56:52 150
原创 java 面向对象相关
面向对象什么是面向对象?我不知道。针对事物或行为,抽取共性,保留多样性,将复杂的事情简单化,在使用的时候将共性和多样性进行组合来达到我们需要实现的功能。这是我的理解。面向对象的特征封装、继承、多态创建对象的过程(A s = new A())⁃ 加载A.class文件进内存⁃ 在栈内存中为s开辟空间⁃ 在堆内存中为s的成员变量开辟控件⁃ 对s的成员变量进行默认初始化⁃ 对s的...
2019-12-16 17:14:22 120
原创 java 泛型的使用
概述基本概述泛型是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型,也就是把类型当做参数一样的传递。JDK1.5时才增加了泛型。作用泛型的出现减少了很多强转的操作,同时避免了很多运行时的错误,在编译期完成检查类型转化。通过泛型的使用在编译阶段完成一些类型转换的工作,避免在运行时强制转换时出现ClassCastException(类型转换异常),在很大的程度...
2019-12-16 16:30:21 94
原创 java 常用的API方法
Object类equals():判断两个对象是否相等clone():进行对象拷贝getClass():返回和当前对象相关的Class对象notify()、notifyAll()、wait()用来对对象进行线程同步String类String类代表字符串,字符串是常量,String是常量,但是引用是可变的。Java 语言提供对字符串串联符号("+")以及将其他对象转换为...
2019-12-16 13:11:13 319
原创 static、final关键字
static作用:修饰成员变量和成员方法:被static修饰的成员变量属于静态成员变量,存放在java内存区域的方法区。被static修饰的方法属于类,被由这个类实例化的所有对象共享,可以并且建议通过类名调用。静态代码块:静态代码块定义在类中方法外,在非静态代码块之前执行(静态代码块 -> 非静态代码块 -> 构造方法),该类不管创建多少对象,静态代码块只执行一次。...
2019-12-16 10:49:15 87
原创 java 运算符
算术运算符算术运算符的操作对象必须是数值类型,不能为boolean进行运算,因为在Java中,char类型本质上是int的子集,所以也能对char类型进行运算。运算符含义+加(一元加号)-减(一元减号)*乘/除%求模(取余数)+ +自增- -自减+=加并赋值-=减并赋值*=乘并赋值/=除并...
2019-12-15 16:18:57 280
原创 java 基本数据类型与包装类
基本类型1.整型名称宽度范围byte8-128 ~ 127short16-32768 ~ 32767int32-2 147 483 648 ~ 2 147 483 647long64-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807整型字面值可以写为十进制,十六进制,八进...
2019-12-13 17:58:15 163
原创 java 关键字整理
用于定义数据类型的关键字class interface byte short intlongfloatdoublecharbooleanvoid用于定义数据类型的值的关键字truefalsenull用于定义流程控制的关键字ifelseswitchcasedefaultwhiledoforbreak 用于switch语句中,表示...
2019-12-13 14:55:20 114
原创 Android 事件分发机制详解(1)
Android事件分发机制详解所谓Android事件分发机制,其实也就是View的事件分发机制,在介绍事件的传递规则之前,首先我们要明白这里需要分析的对象MotionEvent。MotionEvent类在手指接触屏幕后所产生的事件封装成了MotionEvent类,典型的事件类型有如下几种:ACTION_DOWN:手机刚接触屏幕ACTION_MOVE:手指在屏幕上移动ACTI...
2018-05-30 11:14:15 189
原创 Android 开发需要了解的TCP/IP和Http知识
TCP/IP、Http协议和socket之间的区别网络由上往分为(OSI七层模型),实际中使用更多的是右边的TCP/IP参考模型:对于TCP/IP四层模型我们可以简单的理解为:网络接入层:将需要互相连接的节点接入网络中,从而为数据传输提供条件。网际互联层:找到要传输数据的目标节点。(IP协议)传输层:实际传输数据。(TCP、UDP协议)应用层:使用接受到的数据(HTTP、H...
2018-05-29 15:33:57 6160
原创 2017框架集锦(二)
三.完整项目1.iosche一句话介绍:谷歌2016开发者大会的展示项目上榜理由:github上有13.4k个star,位居企业级项目排行榜第一位,牛逼的开发者,权威的设计模式,标准的项目写法,值得一试;笔者建议初学者down下源码,找到app入口,每个页面走一通,配合设计模式的概念加深理解。github https://github.com/google/iosched作者: Google2.Pl
2017-10-19 10:47:17 494
原创 2017框架集锦(一)
一.榜单分类单一框架:仅提供路由、网络层、UI层、通信层或其他单一功能的框架混合开发框架:提供开发hybrid app、h5与webview结合能力、web app能力的框架企业级开源项目:可以独立运行的app,有极高的学习价值、思路借鉴意义书籍类开源项目:类似Open-sourc-project这样的导航类项目;大型公司的Android课程的学习目录 tips榜单排序依据:1.项目开源2.gith
2017-10-19 10:38:00 1292 1
转载 xUtils3源码解析(1): View绑定
概述xUtils3是国人开发的一款功能丰富的Android快速开发框架,值得研究下。 zip包下载:[ZIP] xutils主要分以下几个模块视图绑定模块网络请求模块数据库模块图片加载模块我们将逐一透过源码分析,本文分析视图绑定模块,包含View的注入和View事件的注入。 我们将项目导入AndroidStudio,项目结构: xutils为项目源码,sample为使用方法举例。
2017-10-18 17:05:07 221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人