![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 85
完满生活
鸿茅药酒,每天一口
展开
-
静态代理和动态代理
/** * 静态代理: * code阶段代理类就要知道代理谁,如本例中静态代理代理的是IDoGet */public class Daili { public static void main(String[] args) { //静态代理 new DoGetProxy(new VolleyDoGet()).doGet("aaa"); ...原创 2020-04-16 11:38:25 · 155 阅读 · 0 评论 -
JAVA基础---线程学习笔记(一)
本篇记录线程的基本概念、同步、锁、死锁等import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;/** * 一、概念 * 进程:是一个正在执行的程序。 * 每一个进程执行都有一个执行顺序,该顺序是...原创 2018-07-10 10:47:36 · 127 阅读 · 0 评论 -
JAVA基础---线程学习笔记(二)
1、概念* 线程间通信:* 多个线程操作同一个资源,但是操作的动作不同* 例子:两个线程分别进行数据写入和取出操作,如何让两个线程协作?public class MainActivity4 extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { ...原创 2018-07-11 10:24:06 · 116 阅读 · 0 评论 -
对于Volley请求 cookie的简单实现
1、通过Volley框架中JsonObjectRequest类中方法protected Response<JSONObject> parseNetworkResponse(NetworkResponse response)获取cookie,代码如下:private String getCookie(NetworkResponse response){ String cookie...原创 2018-07-05 11:32:29 · 174 阅读 · 0 评论 -
java反射机制---工厂设计模式的进化
一、基本使用和代码 简单工厂模式 使用步骤1、创建抽象产品类 & 定义具体产品的公共接口;2、创建具体产品类(继承抽象产品类) & 定义生产的具体产品;3、创建工厂类,根据传入不同参数从而创建不同具体产品类的实例;4、外界通过调用工厂类的方法,传入不同参数从而创建不同具体产品类的实例public class Demo2 { public static ...原创 2018-07-26 11:31:34 · 203 阅读 · 0 评论 -
关于BroadcastReceiver遇到的一个小问题记录
现象在BroadcastReceiver中定义的变量在每次接受到广播之后都会被重新赋初始值 private boolean isNetworkAvailable = false;/** * 监控网络变化 */public class NetworkConnectChangedReceiver extends BroadcastReceiver { private boo...原创 2018-08-01 11:33:17 · 909 阅读 · 0 评论 -
深入了解EventBus
一、使用EventBus带来的好处和目的主要功能是替代Intent、Handler、BroadCast在Fragment、Activity、Service、线程之间传递消息。最牛逼优点是开销小,代码简洁,解耦代码。二、EventBus的基本使用1、implementation 'org.greenrobot:eventbus:3.0.0'2、onCreate中订阅Even...原创 2018-08-01 19:15:11 · 243 阅读 · 0 评论 -
ARouter使用详解
步骤:一、添加依赖在module的gradle中添加 defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments = [moduleName: project.getName()] ...原创 2018-08-14 16:00:38 · 1366 阅读 · 0 评论 -
模块化添加可运行demo到主项目
将demo直接集成到项目中的方法使用场景:集成第三方sdk时,由于文档不全面或者没有文档但是有demo,且demo功能满足需求。可将demo以组件化方式导入住项目优点:集成时不需要担心任何需要注意的点,比如Application中初始化、清单文件中相关代码;不需要文档直接进行集成 本案例以集成佳博热敏打印机打印功能为例;一、将demo转化为library d...原创 2018-09-28 10:38:54 · 470 阅读 · 0 评论 -
Android-如何优雅的处理重复点击
转自:https://www.jianshu.com/p/d98e22c127ed?问题在客户端中,一些按钮一般是需要避免重复点击的,比如:购买丶支付丶确定丶提交丶点赞丶收藏等等场景,这些场景短时间内的重复点击会引发一些问题.以前的处理方式可能是采用手动记录最后的点击时间,再通过计算时间间隔来判断是否重复点击 long mLastClickTime = 0; long...转载 2018-10-16 10:39:10 · 682 阅读 · 0 评论 -
百度地图加载大量覆盖物addOverlay耗时问题解决方案
需求:使用百度地图添加覆盖物,方法addOverlay,接口返回覆盖物列表,每一个覆盖物需要的图片还有文字都由接口决定,覆盖物点击需要对应跳转。MarkerOptions markerOptions = new MarkerOptions() .position(latLng) ...原创 2018-11-14 15:28:58 · 9999 阅读 · 5 评论 -
android快速集成网络状态变化全局提示
直接看效果: 实现了有网和没网两种状态的试试广播监听实现步骤:1、定义广播接收器/** * 监控网络变化 */public class NetworkConnectChangedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, ...原创 2018-11-19 11:29:09 · 1033 阅读 · 0 评论 -
java注解(Annotation)是个什么东西,有什么用?
一、什么是注解注解可以理解成一个标签,是给类、方法、变量、属性等加标签;这个标签还会有一些限制因素,java设计出元注解来产生这些限制因素,元注解也是标签,只是这些标签是来描述注解的原始标签。元注解如下:1、标签(注解)的存活时间@Retention取值如下:RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。Retentio...原创 2019-02-27 11:18:37 · 12630 阅读 · 5 评论 -
java构建者模式Builder
定义Builder模式是一步步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细的控制对象的构建过程。该模式是将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离。作为复杂对象可能有很多组成部分,比如汽车有车轮、方向盘、发动机、变速箱还有各种小零件等,如何将这些部件组装成一台汽车,这个装配的过程漫长且复杂,对于这种情况,为了对外部隐藏实现细节,就可...原创 2019-04-10 18:50:51 · 2098 阅读 · 0 评论 -
观察者模式(订阅模式)
定义定义对象间一种一对多的关系,使得每当一个对象改变状态,则所有依赖他的对象都会得到通知并被自动更新。使用场景1、某些时候需要一些对象有所关联,而且这种关联是可以拆分而不是组合在一起的。2、某一事件发生,需要向多方触发。3、消息交换,如消息队列、事件总线的处理机制。角色1、Subject:抽象主题,被观察者(Observable)的抽象,管理着众多观察者的实现,可以实现...原创 2019-04-16 15:16:13 · 230 阅读 · 0 评论 -
单例设计模式
介绍单例是应用最广的模式之一,也可能是很多初级工程师唯一会用的设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。如在一个应用中,应该只有一个ImageLoader实例,这个ImageLoader又含有线程池、缓存系统、网络请求等,很消耗资源,因此没有理由让它构建多个实例。这种不能自由构建对象的情况,就是单例模...原创 2019-04-22 11:12:47 · 123 阅读 · 0 评论 -
Kotlin入门
随着 Kotlin 越来越火爆,学习 Kotlin 已经成为我们必经之路多余的话就不说了,代码是最好的老师对象Java 的写法MainActivity.thisKotlin 的写法this@MainActivity类Java 的写法MainActivity.classKotlin 的写法MainActivity::class...转载 2019-06-26 11:09:32 · 240 阅读 · 0 评论 -
RSA进行简单的接口加密校验方式记录
1、登录接口(第一个接口):a、客户端本地RSA生成公司钥匙对将公钥当登录接口的一个入参传递到服务端b、客户端将登录接口的业务数据(以后所有接口都这么处理)使用私钥加签生成签名参数sign入参传递到服务端c、服务端返回使用客户端传过去的公钥进行加密的token客户端私钥解密得到token存储(以后所有接口的公共入参)2、其它接口公共入参a、将接口的业务数据使用私钥加签生成签...原创 2019-08-09 09:53:09 · 654 阅读 · 0 评论 -
android开发的一些细节问题记录
1、Android Studio 完美修改应用包名点击打开链接2、Android SDK版本号与API Level 的对应关系点击打开链接3、带你彻底明白 Android Studio 打包混淆点击打开链接4、Android4种网络连接方式HttpClient、HttpURLConnection、OKHttp和Volley优缺点和性能对比点击打开链接...转载 2018-07-05 10:23:45 · 174 阅读 · 0 评论 -
RxJava使用全记录
implementation 'io.reactivex.rxjava2:rxjava:2.1.4' implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'package com.example.rxjavademo;import android.app.Activity;import android.os.Bundle;impo...原创 2018-06-19 17:22:05 · 218 阅读 · 0 评论 -
Service断点下载实现
1、实现Activity和Service之间通信2、定义线程信息存储管理帮助类SQLite保持下载的线程信息3、定义下载任务类,实现用线程进行下载功能,同时保存线程信息,暂停时更新线程信息,同时实现下载进度回调。学习总结:一步步代码写下来,最主要的感受是能写出这样的代码很重要一点就是对代码的熟悉程度,比如文件下载的流程,文件存储的代码。第二就是思路需要非常清晰,比如哪个帮助类需要con...原创 2018-05-17 15:38:03 · 176 阅读 · 0 评论 -
android ViewHolder的相关知识
listView的优化方式重用convertViewviewHolderstatic class viewHolder在列表里面有图片的情况下,监听滑动不加载图片多个不同布局,可以创建不同的viewHolder和convertView进行重用ViewHolder不是Android的开发API,而是一种设计方法,就是设计个静态类,缓存一下,省得Listview更新的时候,还要重新操作。1、正常Vie...原创 2018-05-18 10:49:14 · 1265 阅读 · 0 评论 -
多文件多线程断点下载知识点总结
1、数据库多线程访问安全实现DBHelper.classpublic class DBHelper extends SQLiteOpenHelper { public static final String DB_NAME="download.db"; public static final int VERSION=1; public static final String...原创 2018-05-21 11:39:20 · 180 阅读 · 0 评论 -
Handler、Looper、MessageQueue的理解:用法(一)
一、handler是什么? handler是android提供的更新UI的机制,也是一套消息处理机制,可用其发送消息、处理消息。二、为什么是handler? android在设计的时候,就封装了这套消息的发送、传递、处理机制,如果不遵循这种机制更新UI则抛异常。三、用法 mHandler.sendMessage(msg);post(Runnable r)removeMessag...原创 2018-05-21 16:54:30 · 236 阅读 · 0 评论 -
android关于ListView加载时使用多种不同xml的Item的实现
1、主要使用到了BaseAdapter中的方法 @Override public int getItemViewType(int position) { int isRoot = Integer.parseInt(listData.get(position).get("isRoot")); if (isRoot == 1) { ret...原创 2018-05-25 11:48:04 · 1342 阅读 · 0 评论 -
String、StringBuffer、StringBuilder操作字符串耗时对比
private void todo() { //这是一个很长的字符串 String str ="最重要的修改就是这些了,不过在其它一些地方还做了一些小的改动。观察第75行,这里是把被移出屏幕的子View添加到RecycleBin当中,其实也就是说明这个View已经被回收了。那么还记得我们刚刚添加的全局变量mColumnViews吗?它用于缓存每一列的子View,那么...原创 2018-05-25 14:54:00 · 617 阅读 · 0 评论 -
Handler、Looper、MessageQueue的理解:原理(二)
一、android为什么设计只能通过Handler机制进行UI更新? 假如一个Activity中有多个线程更新UI,并且没有加锁机制,会让页面更新错乱。 如果对UI更新加锁处理又会产生性能下降。对于以上问题的解决方案android给我提供的是Handler这样一套UI更新机制,我们只要遵循这个机制就可以了我们不需要关系多线程的问题,所有更新UI的操作都是在主线程的队列中轮询处理。...原创 2018-05-22 15:18:35 · 142 阅读 · 0 评论 -
Handler、Looper、MessageQueue的理解:应用(三)
一、实现线程之间通信方式一/** * 线程1往线程2传递数据 */public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSt...原创 2018-05-22 16:31:40 · 129 阅读 · 0 评论 -
三级缓存实现图片异步加载
实现原理:代码:ImageManager.java ImageMemoryCache.java ImageFileCache.java ImageManager imgManager=new ImageManager(); imgManager.loadBitmap("http://wx4.sinaimg.cn/mw690/bdb37...原创 2018-05-23 16:13:25 · 308 阅读 · 0 评论 -
LRUCache笔记(一)
原文地址这篇文章简短且能很快明白其中的原理总结如下:LRUCache最近最少使用算法,使用的是LinkedHashMap的数据结构LinkedHashMap<Integer, Integer> linkedHashMap = new LinkedHashMap<Integer, Integer>( 0, 0.75f, true)构造函数的最后一个参数true为访问顺...原创 2018-05-23 17:28:06 · 137 阅读 · 0 评论 -
Android Handler导致的内存泄漏分析解决
问题代码:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_imageview_load); mHandler.sendEmptyMessageDelayed(1,...原创 2018-05-24 11:32:25 · 169 阅读 · 0 评论 -
android中强引用、软引用、弱引用。
强引用:直接引用一个对象软引用:当内存不足&没有其他地方引用时被gc回收。弱引用:无论内存是否充足,没有其他地方引用时只要调用gc则被回收。ArrayList<String> list=new ArrayList<String>(); list.add("aaa"); list.add("bbb"); WeakReference<ArrayList...原创 2018-05-24 11:57:16 · 1103 阅读 · 0 评论 -
RxJava与Retrofit学习记录(一)
原文地址https://gank.io/post/56e80c2c677659311bed9841项目结构1、原生Retrofit请求 /** * 原生Retrofit请求 */ private void todo1() { Retrofit retrofit = new Retrofit.Builder().baseUrl(Constants.BAS...原创 2018-06-12 16:21:07 · 199 阅读 · 0 评论 -
OkHttp学习笔记
1、为什么使用Okhttp?以前google推荐使用Volley框架,Volley封装了HttpClient,但是Android6.0之后废弃HTTPClient相关属性导致Volley不能使用(可以将HTTPClient做Library导入解决此问题)。具体Volley代码展示:OkHttp可以是可以解决此问题的一个很好的框架。...原创 2018-06-06 17:10:34 · 130 阅读 · 0 评论 -
RxJava与Retrofit学习记录(二)
使用最新库之后的修改implementation 'io.reactivex.rxjava2:rxjava:2.1.4' implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' //版本要保持一致 implementation 'com.squareup.retrofit2:retrofit:2.4.0' co...原创 2018-06-21 14:28:37 · 130 阅读 · 0 评论 -
Android 7.0 应用间共享文件FileProvider代码笔记
学习http://blog.csdn.net/lmj623565791/article/details/72859156Android7.0之前的拍照常规实现代码public void takePhoto() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (t...原创 2018-06-07 16:56:12 · 1381 阅读 · 0 评论 -
文件下载线程代码备注
class DownloadThread extends Thread{ FileInfo fileInfo; public DownloadThread(FileInfo fileInfo) { this.fileInfo = fileInfo; } @Override public vo...原创 2018-05-17 10:48:38 · 116 阅读 · 0 评论