Android姿势点整理
madoka_
这个作者很懒,什么都没留下…
展开
-
如何正确的在低版本SDK调用高版本API?
当我们的minSdkVersion的版本低于新API所在的版本时,我们直接使用新API在编译时会出现报错。minSdkVersion是在build.gradle中指定的。Call requires API level 24 (current min is 19)编译器还是很强大的,提供了四种解决方案:但是第一、第二、第三种方法只是能编译通过,到了低于API24的系统(也就是低于And...原创 2019-11-12 16:11:34 · 544 阅读 · 0 评论 -
Android姿势点梳理-Handler、Thread、HandlerThread三者的区别
一、前期知识储备(1)Handler类,上官方文档,Handlerpublic class Handler.A Handler allows you to send and process Messageand Runnable objects associated with a thread's MessageQueue. Each Handler instanceis associ...原创 2019-11-12 15:56:43 · 587 阅读 · 0 评论 -
Android姿势点梳理-NetWork——描述一次完整的网络请求过程
0.前言从我们在浏览器的地址栏输入http://blog.csdn.net/seu_calvin后回车,到我们看到该博客的主页,这中间经历了什么呢?简单地回答这个问题,大概是经历了域名解析、TCP的三次握手、建立TCP连接后发起HTTP请求、服务器响应HTTP请求、浏览器解析html代码,同时请求html代码中的资源(如js、css、图片等)、最后浏览器对页面进行渲染并呈现给用户。下面分别...原创 2019-11-12 15:15:43 · 575 阅读 · 0 评论 -
Android姿势点梳理-Activity、Window、View的关系
Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图)LayoutInflater像剪刀,Xml配置像窗花图纸。按照MVC的概念,Activity相当于Controller的角色,Window和View相当于View的角色。1)一个Activity构造的时候会初始化一个Window,准确的说是PhoneWindow。2)这个PhoneWi...原创 2019-11-06 17:32:11 · 128 阅读 · 0 评论 -
Android姿势点梳理-IntentService
IntentService是Service类的子类,用来处理异步请求。客户端通过startService(Intent)方法传递请求给IntentService,IntentService通过worker thread处理每个Intent对象,执行完所有工作后自动停止Service。写构造方法 复写onHandleIntent()方法IntentService执行如下操作...原创 2019-11-06 17:14:54 · 148 阅读 · 0 评论 -
Android姿势点梳理- 本地广播和全局广播有什么差别
本地广播和全局广播的差别BroadcastReceiver是针对应用间、应用与系统间、应用内部进行通信的一种方式LocalBroadcastReceiver仅在自己的应用内发送接收广播,也就是只有自己的应用能收到,数据更加安全广播只在这个程序里,而且效率更高。BroadcastReceiver 使用制作intent(可以携带参数)使用sendBroadcast()传入intent;...原创 2019-11-06 16:44:07 · 295 阅读 · 0 评论 -
Android姿势点梳理-如何导入外部数据库
数据库本质就是文件android系统下数据库应该存放在 /data/data/com..(package name)/ 目录下所以导入数据库其实就是文件的复制操作用到的就是文件流FileInputStream,熟悉java的话可以轻松的完成文件的复制if(!(newFile(dbfile).exists())) { InputStream is =this.context...原创 2019-11-06 16:41:38 · 110 阅读 · 0 评论 -
Android姿势点梳理-ArrayMap和HashMap的实现原理
一:HashMapHashMap内部是使用一个默认容量为16的数组来存储数据的,而数组中每一个元素却又是一个链表的头结点,所以,更准确的来说,HashMap内部存储结构是使用哈希表的拉链结构(数组+链表),这种存储数据的方法叫做拉链法。如图:且每一个结点都是Entry类型,那么Entry是什么呢?我们来看看HashMap中Entry的属性: final ...原创 2019-11-06 16:34:29 · 298 阅读 · 0 评论 -
Android姿势点梳理-HashMap和ArrayMap各自的优势
1.查找效率HashMap因为其根据hashcode的值直接算出index,所以其查找效率是随着数组长度增大而增加的。ArrayMap使用的是二分法查找,所以当数组长度每增加一倍时,就需要多进行一次判断,效率下降。所以对于Map数量比较大的情况下,推荐使用2.扩容数量HashMap初始值16个长度,每次扩容的时候,直接申请双倍的数组空间。ArrayMap每次扩容...原创 2019-11-06 16:33:29 · 364 阅读 · 0 评论 -
安卓姿势点梳理-Java 容器类之间的区别
1.ArrayArray:效率高,容量固定无法动态改变。并且length只能告诉容量,而不能告诉长度。2.Collection、List、Set和MapCollection、List、Set和Map都是接口。Collection是List和Set两个接口的基接口(父接口)List在Collection之上增加了"有序"Set在Collection之上增加了"唯...原创 2019-11-06 11:27:48 · 169 阅读 · 0 评论 -
Android姿势点梳理-抽象类与接口的区别
1.抽象类要被子类继承,接口要被类实现。2.接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。3.接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。4.接口是设计的结果,抽象类是重构的结果。5.抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。6.抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量。7.抽象类主要用来抽象类别,...原创 2019-11-05 16:46:14 · 297 阅读 · 0 评论 -
Android姿势点梳理-什么是线程阻塞,什么导致线程阻塞
阻塞状态的线程的特点是:该线程放弃CPU的使用,暂停运行,只有等到导致阻塞的原因消除之后才恢复运行。或者是被其他的线程中断,该线程也会退出阻塞状态,同时抛出InterruptedException1)线程执行了Thread.sleep(intmillsecond);方法,当前线程放弃CPU,睡眠一段时间,然后再恢复执行2)线程执行一段同步代码,但是尚且无法获得相关的同步锁,只能进入阻塞状态...原创 2019-11-05 16:16:38 · 629 阅读 · 0 评论 -
Android姿势点梳理-JAVA的多态性
多态性java引用类型有两个: 编译时类型 编译时类型由声明该变量时使用的类型决定 运行时类型 运行时类型由实际赋给该变量的对象决定例: 1 class Animal{ 2 public int month = 2; 3 public void eat(){ 4 System.out.println("动物吃东西");...原创 2019-11-05 16:09:05 · 96 阅读 · 0 评论 -
String,StringBuffer与StringBuilder的区别
一、Java String 类——String字符串常量字符串广泛应用在Java 编程中,在 Java 中字符串属于对象,Java 提供了String 类来创建和操作字符串。需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。我们来看一下这张对String操作时内存变化的图:我们可...原创 2019-11-05 15:59:34 · 74 阅读 · 0 评论 -
Android姿势点梳理-Java-int和Integer的区别
在说int和Integer的区别之前,先要弄清楚两个问题:一、java基本数据类型及其封装类二、java自动拆箱和自动装箱一、java基本数据类型及其封装类数据类型 字节大小 封装类byte 8位 Byteshort 16位 Shortint 32位 Intergerlong 64位 Longfloat 32位...原创 2019-11-05 15:52:34 · 270 阅读 · 0 评论 -
Android姿势点梳理-java中int char long各占多少字节数
2.一个字节等于8位 1byte = 8bitchar占用的是2个字节 16位,所以一个char类型的可以存储一个汉字。整型:byte:1个字节 8位 -128~127short :2个字节 16位int :4个字节 32位long:8个字节 64位浮点型:float:4个字节 32 位double :8个字节 64位注:默认的是double类型,如3.1...原创 2019-11-05 15:41:21 · 737 阅读 · 0 评论 -
Android姿势点梳理-HashMap和HashSet的区别
HashMap和HashSet都是collection框架的一部分,它们让我们能够使用对象的集合。collection框架有自己的接口和实现,主要分为Set接口,List接口和Queue接口。它们有各自的特点,Set的集合里不允许对象有重复的值,List允许有重复,它对集合中的对象进行索引,Queue的工作原理是FCFS算法(First Come, First Serve)。什么是HashSe...原创 2019-11-04 17:22:33 · 1570 阅读 · 0 评论 -
Androdi姿势点梳理-HashMap和Hashtable的区别
HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。 H...原创 2019-11-04 17:06:41 · 173 阅读 · 0 评论 -
安卓姿势点梳理-HashMap底层实现原理与碰撞问题
HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题①,当发生碰撞了,对象将会储存...原创 2019-11-04 17:03:21 · 547 阅读 · 0 评论 -
Android姿势点梳理-Java垃圾回收(GC)机制详解
一、为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。二、哪些内存需要回收?哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象。那么如何找到这些对象?1、引用计数法(JAVA没有采用...原创 2019-11-01 11:48:42 · 158 阅读 · 0 评论 -
列举java的集合和继承关系
、1、List、Set、Map是否继承自Collection接口?List、Set 是,Map 不是。Map是键值对映射容器,与List和Set有明显的区别,而Set存储的零散的元素且不允许有重复元素(数学中的集合也是如此),List是线性结构的容器,适用于按数值索引访问元素的情形。总结:List是线性存储(有索引)、不可重复;Set是集合,不可重复;Map是键值对容器。2、阐述A...原创 2019-10-30 16:53:24 · 452 阅读 · 2 评论 -
Android姿势点梳理-抽象类的意义
抽象类的意义抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。1.因为抽象类不能实例化对象,所以必须要有子类来实现它之后才能使用。这样就可以把一些具有相同属性和方法的组件进行抽象,这样更有利于代码和程序的维护。2.当又有一个具有相似的组件产生时,只需要实现该抽象类就可以获得该抽象类已经定义的那些属性和方法。...原创 2019-10-30 11:40:08 · 255 阅读 · 0 评论 -
Android姿势点梳理-JAVA基础-接口的意义
接口的作用就是把使用接口的人和实现接口的人分开,实现接口的人不必要关心谁去使用,而使用接口的人也不用关心实现的细节。引出两个问题:一、明明可以在类中直接写所需的方法,为什么还要多写一个接口(或抽象类)?1. 减少代码的书写(减少代码重载)2. 提高了代码的可维护性和扩展性。3. 在团队合作中,代码的规范性二、抽象类和接口都差不多,在什么时候才选择使用接口?1. 在当前类族(继...原创 2019-10-30 11:35:16 · 164 阅读 · 0 评论