自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 最简单最直接的将自己的library上传到jcenter

如果想将自己写的library上传到jcenter供大家使用,要经过一下几步第一步:           首先要将自己的项目上传到github上,这里的项目是指使用了library的项目。具体上传步骤可以参考https://www.cnblogs.com/qwangxiao/p/7365608.html第二步:             去https://bintray.com/注册...

2018-08-20 17:27:41 343

原创 八大排序算法的思想

1   选择排序:每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止2  冒泡排序:对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序3   插入排序:每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。4  希尔排序:把记录按下标的一定增量分组,对...

2018-07-18 16:25:23 537

原创 http与https区别

最大的区别就是一个是不安全的,一个有加密协议是安全的。https是http的升级版http的连接很简单,是无状态的,要利用cookie解决这个问题;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。http解决的是数据包装的问题,TCP解决的是数据传输的问题,socket是对TCP的封装TCP连接的三次握手,1 客户端向服务端发包,然后...

2018-07-18 16:25:08 226

原创 activity fragment fragment 直接相互通信

在fragment调用getActivity,获取activty的对象,就可以就就可以对activity的控件进行操作activity调用getFragmentManager可以获取fragment的对象,这样就可以向其传递数据,一般我们都是动态生产ragment的。所以我们要根据实际情况,解决问题。可采用发广播的形式,不过这个要是广播写多了,代码就不会管理了。可以使用回掉接口。这是一种简...

2018-07-18 14:38:03 227

原创 activity横竖屏切换生命周期

竖屏切横屏时  销毁又重新创建,销毁时保存activity的数据,再创建时恢复数据。横屏切竖屏时   销毁创建,又销毁创建通过修改清单文件activity节点下的android:configChanges可以让切换不再执行生命周期。要是项目没特别需求就禁止切换  android:screenOrientation=portrait...

2018-07-18 11:12:49 214

原创 安卓8.0/7.0/6.0/5.0特性

Android 8.0          允许Activity以画中画模式启动。属于多屏模式,主要用于视频播放          重新设计了通知,引入了通知频道的概念,更好地统一管理通知。          自动填充框架,省去自己重复地手填账号密码,银行卡号。系统来管理提供。          可下载字体。这样自己的appke'y可以不用内置字体包,减少app的大小,使用别人的...

2018-07-18 10:38:10 771

原创 进程通信浅解

进程通信相当于就是自己的app和别的应用通信,有四种方式,正好对应了四大组件Activity,Broadcast,ContentProvider,和Service。利用service通信也叫AIDL.Activity  我们直接用intent就可以实现通信,比如我们调用打电话发短信。只不过intent里面传的不是类名而是actionBroadcast  我们可以发广播让别的应用接受,这个也...

2018-07-17 11:50:52 124

原创 热修复原理浅析

热修复的基本思想是把有问题的dex替换掉,这个dex是能在虚拟机运行的文件,我们写的代码经过复杂的编译就转换成了dex文件,那怎么才能把dex替换掉了?虚拟机是从一个叫Element的数组中找到我们的dex,然后运行,那只要我们把无bug的dex放在集合有bug的dex前面,虚拟机遍历集合的时候,就先找到它,然后加载它就完成了热修复。那怎么把无bug的dex放在又bug的dex之前了?这里...

2018-07-16 22:33:32 178

原创 View,ViewGroup浅析

View是android平台用户UI界面的体现的最基础的单位,ViewGroup也是其派生出来的,来容纳View 的View可以理解成textview、imageview、button等。ViewGroup可以理解成相对布局,线性布局等。View不存在事件分发,因为他的onTouchEvent()默认会把事件消费掉,而且View往下也没子View了,对于View(注意!ViewGr...

2018-07-16 16:53:49 194

原创 对JNI,NDK的了解

NDK是开发JNI的工具集合JNI(java native interfce)java本地接口,用来java与c/c++交互的技术。对java程序员来说JNI开发步骤1、在activity声明一个native的方法public class HelloActivity extends Activity{ public native String sayHello(); }2、在sc...

2018-07-15 22:10:34 138

原创 常用的设计模式(单例、建造者、观察者、模板模式、工厂模式)

单例:常用的有两种写法,① 饿汉式  线程安全,不过类创建时对象实例就创建好了。② 懒汉式  线程不安全,如果加锁解决线程安全那就变成同步了,性能受损,可以使用静态类解决安全问题建造者:开发中经常用到,只不过自己倒不会使用建造者模式开发个功能类,我们经常使用的glide、okhttp、dialog就是使用的建造者模式,解耦好,根据不用的bulider有不用的扩展。观察者:另外说一下接口监听也是观察...

2018-07-15 18:14:39 890

转载 回调函数和观察者模式的区别

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。观察者模式完美的将观察者和被观察的对象分离开,一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。回调函数其实也算是一种观察者模式的实现方式,回调函数实现的观察者和被观察者往往是一对一的依赖关系。所以最明显的区别是观察者模式是一种设计思路,而回调函数式一种具体的实现方式;另一明显区别是一对多还是多对多的依赖...

2018-07-15 16:48:57 2711

原创 布局优化

1 使用include复用布局2 使用merge作为复用布局的父控件,这样可以避免嵌套3 界面控件多了,可以让住让的显示,不重要的可以用按钮来控制,使用ViewStub控件来android:layout不常用的控件,这个控件不会参与布局,只有我们手动inflate 的时候 他才会绘制...

2018-07-15 16:33:08 171

原创 多线程浅解

为什么会出现多线程,这是因为一个应用开启默认是一个进程和一个UI主线程,而我们又不能在主线程做耗时的操作,不然就会引起ANR(应用不响应,主线程五秒,广播十秒),所以这时候就需要利用多线程解决问题了Handler机制    handler可以理解成是利用多线程技术解决问题,Handler机制主要由4部分组成, Looper, 消息队列, 消息类和Handler组成, 其中Looper和消息队列是和...

2018-07-15 15:50:32 173

原创 图片的三级缓存,强引用,弱引用,软引用,虚引用

图片的三级缓存就是网络缓存、本地缓存、内存缓存,网络缓存没什么说的就是直接加载网络的图片,本地缓存就是将网络的资源缓存在手机磁盘上,内存缓存是临时缓存需要释放的不然就oom了。缓存策略:首次加载的时候通过网络加载,获取图片,然后保存到内存和 SD 卡中。之后运行 APP 时,优先访问内存中的图片缓存。如果内存没有,则加载本地 SD 卡中的图片。内存缓存的原理:使用LruCache缓存类 ,其内部通...

2018-07-15 13:51:00 462

转载 Picasso, ImageLoader, Fresco, Glide 优劣

首先看 Fresco, 它的优点是其他几个框架没有的, 或者说是其他几个框架的短板.Fresco:优点:1. 图片存储在安卓系统的匿名共享内存, 而不是虚拟机的堆内存中, 图片的中间缓冲数据也存放在本地堆内存,所以, 应用程序有更多的内存使用, 不会因为图片加载而导致 oom, 同时也减少垃圾回收器频繁调用回收 Bitmap导致的界面卡顿, 性能更高.2. 渐进式加载 JPEG 图片, 支持图片从...

2018-07-15 11:55:06 193

原创 RxJava、RxAndroid知识点

RxAndroid是Rxjava基于安卓的扩展,Rxjava是基于响应式编程的框架,什么是响应式编程,本质就是观察者模式,是观察者和订阅者为基础的异步响应方式。Rxjava的内容主要是由被观察者、观察者、订阅、和事件构成的。被观察者和观察者通过订阅建立关系,常用操作符1、observeOn 规定接下来的事件在哪个线程运行,有主线程、IO线程(耗时操作或者网络请求)、计算线程(用来遍历数...

2018-07-15 10:44:18 251

原创 安卓屏幕适配笔记

手机尺寸不同,分辨率不同就造成适配的问题。(分辨率px=宽X高,尺寸=手机对角线的物理尺寸,密度=尺寸/分辨率,如果密度都一样了就不存在适配的问题了)目前的主流的就是720*1280  1920x1080    5英寸或者5.5英寸的智能安卓手机屏幕适配问题的本质使得“布局”、“布局组件”、“图片资源”、“用户界面流程”匹配不同的屏幕尺寸布局:尽量使用相对布局,禁用绝对布局,使用size限定符创建...

2018-07-14 22:14:58 169

转载 Android4种网络连接方式HttpClient、HttpURLConnection、OKHttp和Volley优缺点和性能对比

出处https://blog.csdn.net/zhangcanyan/article/details/51793951比较的指标:1、cpu2、流量3、电量4、内存占用5、联网时间功能点:1、重试机制2、提供的扩展功能3、易用性4、是否https5、是否支持reflect api,OkHttp有配套方法6、缓存、重试7、cookie支持session  id会话支持8、弱网性能和稳定性9、超时时...

2018-07-14 18:30:09 1164

原创 OkHttp的实现原理和缓存机制(自用)

一般都是和retrofit搭配使用的,retrofit的原理就是动态代理(动态代理的理解:如果我们不使用retrofit,那就要自己封装okhttp,比如我要封装一个get方法,我为了使这个方法更健壮,我就要写各种代码,最好发现好多get方法大部分代码是一样的,那这时候我就在想把这些方法抽出来,我只需要写一个方法接口就行,然后通过代理来实现其内部方法,动态代理的两个方式点击打开链接),我们只需要创...

2018-07-14 17:31:09 832

原创 RecyclerView使用过程的坑

1、在Adapter的onCreateViewHolder中加载布局,inflate要传入父View2、notifyDataSetChanged时图片闪烁,adapter.setHasStableIds(true); @Override public long getItemId(int position) {return position; (默认super.getItemId(...

2018-07-14 10:40:07 685 1

原创 内存泄漏和内存溢出的浅析

内存泄漏指的是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出内存溢出是指程序申请内存时,没有足够的内存供申请者使用就会造成溢出重点内存泄漏的堆积就会造成内存溢出内存泄漏情况:造成泄漏的原因有很多,比如我们使用了太多的static,集合对象不清理,资源不回收(IO,sqlite),长连接行为占用内存,又不关闭。还有使用handler。...

2018-07-13 16:23:44 185

原创 MVP与MVC的浅解

一直开发以来用的是MVC的架构,这个架构也是从Java开发移植过来的,但是在安卓上使用MVC总是感觉和后台的MVC有点区别,MVC就是Model(实体类和执行业务的类)、  View  (布局) 、Controll(Activity) ,但是我们的activity做了太多的事情,事件的处理,UI数据的绑定都需要在activity进行,所以这不是完全意义上的MVC,如果用上Data-binder,就...

2018-07-13 13:58:23 109

原创 关于SingleInstance使用的问题

SingleInstance是activity启动的一种模式,一般做应用层开发很少用到,我一般用到的app定时提醒会用到这个模式吧。这个模式使用起来有很多坑,假设有activityA,activityB,activityC这三个activity,我们将activityB设置为SingleInstance第一种情况    A开启B,B开启C,如果finish activityC,那么activity...

2018-07-13 11:22:01 3590 1

转载 [Android开发]Activity的四种启动模式及其应用场景

首先介绍一下任务栈:(1)程序打开时就创建了一个任务栈, 用于存储当前程序的activity,所有的activity属于一个任务栈。 (2)一个任务栈包含了一个activity的集合, 去有序的选择哪一个activity和用户进行交互:只有在任务栈栈顶的activity才可以跟用户进行交互。 (3)任务栈可以移动到后台, 并且保留了每一个activity的状态. 并且有序的给用户列出它们的任务, ...

2018-07-12 13:16:08 10421

转载 Android面试之---讲一下你对Activity的了解(面试必问的).

这篇文章会涉及到以下几个内容一 Activity的生命周期二 让Activity变成一个窗口:Activity属性设定三 你后台的Activity被系统 回收怎么办:onSaveInstanceState四 调用与被调用:我们的通信使者 - Intent一 Activity的生命周期   和其他手机 平台 的应用 程序 一样,Android的应用程序 的生命周期是被统一掌控 的,也   就是说我们...

2018-07-12 13:10:31 189

原创 Activity启动过程的简单理解

Activity启动程序可分为四种情况    (1)在应用程序中执行startActivity()或startActivityForResult()    (2)从桌面点击启动    (3)按返回键自动启动上一个界面    (4)按home键,从应用列表选取一个其实activity的启动都离不开栈,栈可以简单理解为一个存放activity的容器第一种情况,桌面可以理解成一个...

2018-07-12 13:08:03 337

空空如也

空空如也

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

TA关注的人

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