Android一天一个知识点
XST891205
我目前就想好好学习Android知识
展开
-
Android动态来改变App桌面图标
时不时的我们就会发现,一些我们常见的应用,比如某宝,某东,在一些特殊的日子中,比如双十一,元旦,为了迎合这样一个日子的气氛,在桌面的应用图标就会发生改变,其实对于这样的一个桌面图标更换,Android中为我们提供了AndroidManifest.xml里的标签实现方式(更多文章请关注我的微信公众账号,左边二维码)。我们知道,我们每写一个 Activity转载 2018-02-07 14:18:17 · 359 阅读 · 0 评论 -
图片加载之Glide使用总结
概述作为Glide是谷歌推荐的图片加载库,Glide又着 支持video,Gif,SVG格式,同时有着很好的生命周期管理,支持Volley,OkHttp,更好的内存管理策略等优点。相关方法with():指定了声明周期load():加载资源,String/Uri/File/Integer/URL/byte[]/T,或者 loadFromMediaStore(U转载 2017-12-18 10:57:34 · 607 阅读 · 0 评论 -
Android开发中线程和线程池的使用
说到线程,我想大家都不陌生,因为在开发时候或多或少都会用到线程,而通常创建线程有两种方式:1、继承Thread类 2、实现Runnable接口12虽说这两种方式都可以创建出一个线程,不过它们之间还是有一点区别的,主要区别在于在多线程访问同一资源的情况下,用Runnable接口创建的线程可以处理同一资源,而用Thread类创建的线程则各自独立处理,各自拥有自己的资源。 所以,在Ja转载 2017-12-18 10:57:14 · 311 阅读 · 0 评论 -
Android的Handler消息传递机制
能简单说得我们尽量不复杂:为了避免ANR,我们会通常把 耗时操作放在子线程里面去执行,因为子线程不能更新UI,所以当子线程需要更新的UI的时候就需要借助到安卓的消息机制,也就是Handler机制了。一个程序的运行,就是一个进程的在执行,一个进程里面可以拥有很多个线程。主线程:也叫UI线程,或称ActivityThread,用于运行四大组件和处理他们用户的交互。 Activi转载 2017-12-18 10:55:55 · 349 阅读 · 0 评论 -
Android性能优化方案总结
Android的性能优化主要是从,布局优化,绘制优化,内存泄漏优化,响应速度优化,listview优化,bitmap优化,线程优化进行优化处理的。1.布局优化和绘制优化:减少视图层级可以有效的减少内存消耗,因为视图是一个树形结构,每次刷新和渲染都会遍历一次。 布局优化的思想就是减少布局的层级,主要是采用include标签、merge标签、ViewStub标签,其中include转载 2017-12-15 10:28:47 · 294 阅读 · 0 评论 -
OKHttp介绍
OkHttp是一个高效的HTTP库:会从很多常用的连接问题中自动恢复。如果服务器配置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP。OkHttp还处理了代理服务器问题和SSL握手失败问题。OKHttp支持 SPDY ,共享同一个Socket来处理同一个服务器的所有请求如果SPDY不可用,则通过连接池来减少请求延迟。总体设计:上 面是OK转载 2017-12-15 10:27:32 · 411 阅读 · 0 评论 -
Retrofit原理浅析
Retrofit是Square组织开发维护的一款网络框架。Retrofit非常适合处理RESTful风格的网络接口。Retrofit通过注解和动态代理简化了网络请求的代码工作量,与OKHttp为同一组织开发,能够很好的结合使用。Retrofit和okhttp配合使用的优点Retrofit其实是在okhttp的基础之上进行了封装。把网络请求都交给给了Okhttp,我们只需要通过简单的转载 2017-12-15 10:26:30 · 249 阅读 · 0 评论 -
MVC, MVP, MVVM比较以及区别
MVC模式:MVC,Model View Controller,是软件架构中最常见的一种框架,简单来说就是通过controller的控制去操作model层的数据,并且返回给view层展示,具体见下图 当用户出发事件的时候,view层会发送指令到controller层,接着controller去通知model层更新数据,model层更新完数据以后直接显示在view层上,这就是MVC转载 2017-12-15 10:25:41 · 599 阅读 · 0 评论 -
常用的图片加载库的区别(Gilde,Picasso,Image-loader,Fresco)
Gilde,Picasso,Image-loader,Fresco图片加载库的使区别GlideGlide是一个非常成熟的图片加载库,他可以从多个源加载图片,如:网路,本地,Uri等,更重要的是他内部封装了非常好的缓存机制并且在处理图片的时候能保持一个低的内存消耗。 当我们调整imageview的大小时,Picasso会不管imageview大小是什么,总是直接缓存整张图片,而G转载 2017-12-15 10:25:23 · 399 阅读 · 0 评论 -
String,StringBuffer,StringBuilder的区别
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。1.可变与不可变String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。 private final char value[转载 2017-12-15 10:24:49 · 195 阅读 · 0 评论 -
java作用域public protected private,以及不写时的区别
下面我简单的画一张表来说明问题:modifiers作用域(可见)当前类同包子孙类其他包public√ √ √ √protected √ √ √×default(friendly) √ √××转载 2017-12-15 10:24:21 · 374 阅读 · 0 评论 -
java实现冒泡排序
一、基本概念:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一转载 2017-12-15 10:23:26 · 254 阅读 · 0 评论 -
Android中常出现内存泄漏的情况
1. 有“static”变量引用待释放类实例示例代码:public class StaticReferenceActivity extends AppCompatActivity { private static final String NAME = StaticReferenceActivity.class.getSimpleName(); private s原创 2017-12-15 10:21:09 · 260 阅读 · 0 评论 -
Java不可变对象
一、不可变类简介不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值。如JDK内部自带的很多不可变类:Interger、Long和String等。可变类:相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类。下面的理解可能会易懂一些:概念:不可变类的意思是创建该类的实例后,该实例的属性是不可改变的。Java转载 2017-12-18 10:57:55 · 290 阅读 · 0 评论 -
Java中HashMap,LinkedHashMap,TreeMap的区别
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历转载 2017-12-18 10:58:38 · 252 阅读 · 0 评论 -
ViewPager系列之ViewPager一屏显示多个子页面
ViewPager一屏显示多个子页面,常见的有两种形式:1、当前展示的页面右侧显示一部分下个页面的内容2、当前页面居中,左右两边分别显示上一个页面、下一个页面第 1 种表现形式的实现代码其实这种效果很容易实现,谷歌给我们提供了方法,只需要在adapter中重写这个方法就可以了。 /** * Returns the proportional转载 2018-01-26 11:09:00 · 559 阅读 · 0 评论 -
android 软件更新时解析包时错误
最近,公司需求,需要做一个内部APP升级提示的功能,我当时就想,垃圾,现在都是用第三方的提示了,比如,腾讯的tinker什么的 ,谁还自己写啊,不过,最后我想,这丫也是一个锻炼的机会,反正闲着也是闲着,然后就开始了自己的跳坑的节奏,解决链接:点击打开链接,这边文章是目前我个人认为,解决这类问题的最详细的文字,我就不在一一详细的说明了,但是,我发现一个新的问题,下面跟大家分享下:SDK版原创 2018-01-26 10:52:34 · 1087 阅读 · 0 评论 -
网络请求
1.Http网路请求原理 2.【Android网络开发】(一)HTTP请求报文和HTTP响应报文 3.逐步解读HTTP报文的组成及含义 4.HTTP请求/响应报文结构 5.HTTP协议之报文详解 6.自定义view————进度条 7.AgentWeb , 一个简洁易用的 Android Web 库 8.仿京东收货地址 9.Android RxJava:这是一份全面 & 详细 的Rx原创 2018-01-17 11:26:29 · 263 阅读 · 0 评论 -
Java设计模式--单例模式
确保某个类有且只有一个对象实例存在,避免产生多个对象消耗过多的资源。实现单例模式主要有几个关键点:1.构造函数不对外开放,一般为private 2.通过一个静态方法或枚举返回一个单例对象3.确保单例类的对象有且只有一个,尤其是在多线程环境下4.确保单例类对象在反序列化时不会重新构建对象12345饿汉式:public class Singleton { pri转载 2018-01-17 11:18:13 · 237 阅读 · 0 评论 -
Java当中的四种引用
强引用,软引用,弱引用,虚引用.不同的引用类型主要体现在GC上:强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象软引用:在使用软引用时,如转载 2018-01-17 11:17:54 · 260 阅读 · 0 评论 -
关于JVM和(堆和栈的区别)
JVM特性平台无关性. Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码转载 2018-01-17 11:17:41 · 316 阅读 · 0 评论 -
Java中ArrayList、Vector、LinkedList三者的异同点
一、ArrayListArrayList是一个可以处理变长数组的类型,这里不局限于“数”组,ArrayList是一个泛型类,可以存放任意类型的对象。顾名思义,ArrayList是一个数组列表,因此其内部是使用一个数组来存放对象的,因为Object是一切类型的父类,因而ArrayList内部是有一个Object类型的数组类存放对象。ArrayList类常用的方法有add()、clear()、转载 2018-01-17 11:17:25 · 284 阅读 · 0 评论 -
Android 性能优化之内存泄漏的检测与修复
在 Android 开发中, 内存优化是APP性能优化中很重要的一个部分. 而在内存优化中, 最重要的就是修复内存泄漏问题. 本文就来介绍一下内存泄漏的基本概念以及常用的检测手段.1. 什么是内存泄漏简单来说, 当一个对象不再被使用时, 理应不存在任何强引用指向他从而可以让垃圾回收器(GC)在未来的某个时间点将其回收的, 但由于某些原因导致有强引用依然指向该对象, 使得该对转载 2018-01-17 11:17:00 · 340 阅读 · 0 评论 -
java设计模式--观察者模式
观察者模式定义了对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖者都会收到通知并且自动更新。生活中很多地方用到这种模式,比如说天气预报订阅系统,报纸订阅系统等。下面一个实例模拟以下发布—-订阅过程/** * 观察者 * @author wangzl * */public class Coder implements Observer { public转载 2017-12-18 11:10:28 · 305 阅读 · 0 评论 -
Java设计模式--工厂模式
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类。工厂模式的形态 工厂模式主要用一下几种形态: 1:简单工厂(Simple Factory):不利于产生系列产品 2:工厂方法(Factory Method):又称为多形性工厂 3:抽象工厂(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品一:简单工厂模式转载 2017-12-18 11:03:34 · 283 阅读 · 0 评论 -
TCP和UDP概念和区别
概念:TCP:是面向连接的, 可靠的流协议 可以提供面向连接的、可靠的、点到点的通信。UDP:是不具有可靠性的数据报协议. 细微的处理它会交给上层应用去完成.UDP的特点:1、每一次发送数据都需要绑定IP和端口号。相当于发送邮件,只管是否发送成功,不保证对方是否接收到数据,所以UDP是不安全的,有可能会丢失数据包。2、UDP:类似于HTTP,也属于短连接。转载 2017-12-18 11:02:03 · 702 阅读 · 0 评论 -
HTTP与HTTPS的区别
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安转载 2017-12-18 11:00:29 · 297 阅读 · 0 评论 -
二分查找
二分查找算法(JAVA) 1.二分查找又称折半查找,它是一种效率较高的查找方法。2.二分查找要求:(1)必须采用顺序存储结构 (2).必须按关键字大小有序排列3.原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前 面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过转载 2017-12-18 10:59:15 · 291 阅读 · 0 评论 -
Android中动画的介绍以及使用
1 背景不能只分析源码呀,分析的同时也要整理归纳基础知识,刚好有人微博私信让全面说说Android的动画,所以今天来一发Android应用的各种Animation大集合。英文厉害的请直接移步参考Android Developer。Android系统提供了很多丰富的API去实现UI的2D与3D动画,最主要的划分可以分为如下几类:View Animation: 视图转载 2017-12-14 14:15:19 · 1261 阅读 · 0 评论 -
EventBus 源码解析
概述EventBus是一款针对Android优化的发布/订阅(publish/subscribe)事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息。简化了应用程序内各组件间、组件与后台线程间的通信。优点是开销小,代码更优雅。以及将发送者和接收者解耦。比如请求网络,等网络返回时通过Handler或B转载 2017-12-14 13:51:54 · 262 阅读 · 0 评论 -
Java中==和equal有什么区别
先来看一段代码:String str1 = new String("str"); String str2 = new String("str"); System.out.println("==比较 :" + (str1 == str2)); System.out.println("equal比较:" + str1.equals(str2));转载 2017-12-12 13:11:50 · 288 阅读 · 0 评论 -
Java中静态变量和实例变量的区别?&和&&
静态变量和实例变量的区别?在语法定义上的区别:静态变量前要加static关键字,而实例变量前不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码文件,不用创建任何实例象,静态变量就会被分配空间,静态变量就可以被使用了。总转载 2017-12-12 11:26:40 · 414 阅读 · 0 评论 -
Android中的缓存策略--LruCache
一、Android中的缓存策略一般来说,缓存策略主要包含缓存的添加、获取和删除这三类操作。如何添加和获取缓存这个比较好理解,那么为什么还要删除缓存呢?这是因为不管是内存缓存还是硬盘缓存,它们的缓存大小都是有限的。当缓存满了之后,再想其添加缓存,这个时候就需要删除一些旧的缓存并添加新的缓存。因此LRU(Least Recently Used)缓存算法便应运而生,LRU是近期最少使用的转载 2017-12-12 11:16:22 · 264 阅读 · 0 评论 -
Android中的缓存策略--DiskLruCache
LruCache是一种内存缓存策略,但是当存在大量图片的时候,我们指定的缓存内存空间可能很快就会用完,这个时候,LruCache就会频繁的进行trimToSize()操作,不断的将最近最少使用的数据移除,当再次需要该数据时,又得从网络上重新加载。为此,Google提供了一种磁盘缓存的解决方案——DiskLruCache1 DiskLruCache实现原理使用了DiskLruCa转载 2017-12-12 11:03:54 · 462 阅读 · 0 评论 -
Window、Activity、DecorView以及ViewRoot之间的关系
ActivityActivity并不负责视图控制,它只是控制生命周期和处理事件。真正控制视图的是Window。一个Activity包含了一个Window,Window才是真正代表一个窗口。Activity就像一个控制器,统筹视图的添加与显示,以及通过其他回调方法,来与Window、以及View进行交互。WindowWindow是视图的承载器,内部持有一个 DecorView转载 2017-12-12 10:43:24 · 366 阅读 · 0 评论 -
Android中View测量、布局及绘制原理
一、View绘制的流程框架View的绘制是从上往下一层层迭代下来的。DecorView–>ViewGroup(—>ViewGroup)–>View ,按照这个流程从上往下,依次measure(测量),layout(布局),draw(绘制)。 二、Measure流程顾名思义,就是测量每个控件的大小。调用measure()方法,进行一些逻辑处理,然后转载 2017-12-12 10:38:28 · 328 阅读 · 0 评论 -
Android四大组件之BroadcastReceiver
一、 定义BroadcastReceiver (广播接收器),属于Android四大组件之一在Android开发中,BroadcastReceiver的应用场景非常多广播,是一个全局的监听器,属于 Android 四大组件之一,Android 广播分为两个角色:广播发送者、广播接收者二、 作用用于监听 / 接收 应用发出的广播消息,并做出响应应用场景 a.转载 2017-12-12 10:08:56 · 250 阅读 · 0 评论 -
Android四大组件之Service
一、Service简介Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,只不过它没有UI界面,是在后台运行的组件。Service是Android中实现程序后台运行的解决方案,它非常适用于去执行那些不需要和用户交互而且还要求长期运行的任务。Service默认并不会运行在子线程中,它也不运行在一个独立的进程中,它同样执行在UI线程中,因此,转载 2017-12-11 17:20:12 · 226 阅读 · 0 评论 -
Android四大组件之Activity
一、Activity的生命周期本节内容将生命周期的情况分为两部分介绍,第一部分先了解典型的生命周期的7个部分及Activity的状态。第二部分会介绍Activity在一些特殊1.典型的生命周期的了解 在正常情况下,一个Activity从启动到结束会以如下顺序经历整个生命周期: onCreate()->onStart()->onResume()->onPause()->原创 2017-12-11 17:05:35 · 216 阅读 · 0 评论 -
Glide的缓存机制
Glide缓存简介Glide的缓存设计可以说是非常先进的,考虑的场景也很周全。在缓存这一功能上,Glide又将它分成了两个模块,一个是内存缓存,一个是硬盘缓存。这两个缓存模块的作用各不相同,内存缓存的主要作用是防止应用重复将图片数据读取到内存当中,而硬盘缓存的主要作用是防止应用重复从网络或其他地方重复下载和读取数据。内存缓存和硬盘缓存的相互结合才构成了Glide极佳的图片缓原创 2017-12-11 16:10:59 · 367 阅读 · 0 评论