自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (6)
  • 收藏
  • 关注

原创 GC回收机制

1、什么是垃圾 所谓垃圾,就是内存中已经没用的对象。既然是“垃圾回收”,那就需要知道哪些对象是垃圾,JAVA虚拟机中根据可达性分析的算法来决定哪些对象是要被回收的垃圾1、什么是可达性分析算法 JVM是将内存中GCRoot为起始点,从起始点开始往下搜索,搜索走过的路劲,成为引用链,最后通过判断对象的引用链是否可达来判断是否可回收,例如,某些对象和引用链是断开的,没有连接到GCRoot,说明该对象是垃圾对象,则该对象在GC的时候会被回收调3、 JVM分代回收策略...

2021-06-30 18:02:56 145

原创 图片缓存之解析Andorid的缓存机制LruCache

前言 在Android 2.2以上的sdk中提供了缓存类LruCache。LruCache用于内存缓存,常用的应用场景有很多,比如我们的图片加载库的内存缓存就可以利用LruCache来实现,今天我们一起来学习一下LruCache的源码。LruCache简介 LruCache里实现的是LinkedHashMap类,并且是LinkHashMap里所有的Entry按照访问的顺序排列,根据设置的缓存大小,如果缓存已满,移除最近最少访问的Entry。源码分析 LruCache源码...

2020-10-22 20:26:03 165

原创 StaggeredGridLayoutManager减少RecyclerView套嵌RecyclerView

在实际开发中,有时候遇到复杂的列表布局,往往会涉及到即有竖向列表,又有瀑布流一起滑动,往往会想到,用两个RecyclerView进行套嵌,这样不是不可以,但是性能不是很好,RecyclerView套嵌RecyclerView会滑动的时候会卡顿。其实用一个RecyclerView就可以,使用StaggeredGridLayoutManager作为管理器,如果某些Item需要水平撑满,则需要在该item的ViewHolder中的onBindViewHolder如下设置: ViewGroup.L...

2020-09-30 15:41:23 314

原创 Handler的原理及源码分析

Handler在安卓中起到了很重要的作用,也是面试中经常被提问到的点,下面我们从源码来分析下Handler首先,Handler在安卓中有什么作用?1、因为安卓不能在主线程做耗时的操作,耗时操作需要在子线程中操作,但是子线程不能更新UI,因此需要Handler在子线程发消息给主线程来更新UI其次,Handler的原理机制 Handler有4个对象handler、Message、MessageQueue、Looper; 1、MessageQueue:消息队列,相当于传说...

2020-07-29 15:25:09 414

原创 Android中AIDL的跨进程通讯分析

在很早的时候,就已经接触过AIDL了,也在项目中用到,今天记录下AIDL的使用过程及其跨进程通讯的内部流程一、如何实现AIDL跨进程需求是:实现添加和获取Student类1、写Student类,必须进行实例化处理 Parcelable 2、在项目工程app目录main下创建一个aidl文件夹 点击build——》make build会自动生成相应...

2019-09-26 16:11:31 111

原创 Android Activity的启动源码分析

Activty是Android四大组件之一,是大家用的最多的组件,今天我们来了解下Activity的启动过程,从startActivity开始 Intent intent11 = new Intent(this, ThreadPoolDemoActivity.class); startActivity(intent11);进入startActivity源码: @Overrid...

2019-08-30 10:20:06 198

原创 Android View事件分发源码分析

今天通过源码分析下Android事件分发机制,分别从Activity、ViewGroup、View进行分析Activity的事件分发当点击屏幕,MetionEvent.MOVE_DOWND的时候,首先会调用dispatchTouchEvent(),其源码如下:public boolean dispatchTouchEvent(MotionEvent ev) { if...

2019-08-22 17:53:41 156

原创 Android studio 多渠道打包

Android studio多渠道打包productFlavors的使用流程如下:以下为我按照三个渠道打包流程:第一:在APP项目目录的src目录下,新建三个文件:product、prodcuta、productb三个product文件下可以建assert、java、res文件夹,assert中的资源如有差异化,需要保持文件名称一致,java中包名和类名要保持一致、res文件下的资源文...

2019-07-30 14:27:32 135

原创 OkHttp3源码分析

1、首先获取OkhttpClient对象和OkHttpClient.Builder,其中有两种方式 第一种:OkHttpClient okHttpClient = new OkHttpClient();OkHttpClient.Builder builder = okHttpClient.newBuilder();builder.connectTimeout(30, TimeUn...

2019-06-14 17:24:06 211

原创 AAPT: error: resource previously defined

What went wrong:Execution failed for task ':AndroidJD-Phone:mergeMinSdk14PrcDebugResources'.> java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource compilation failed/root/.gradle/caches/transf

2021-01-07 14:39:57 1648 1

原创 The style on this component requires your app theme to be Theme.AppCompat (or a descendant)

最新在小米4系统很低的手机上,报这样一个崩溃java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.AppCompat (or a descendant).---android.view.InflateException: Binary XML file line #18: Error inflating class <unknown> andr

2020-12-09 10:37:41 886

原创 Android Studio 3.0后Kotlin运行main报错Exception in thread “main“ java.lang.ClassNotFoundException解决

2020-08-12 17:19:05 702

原创 RecyclerView套嵌RecyclerView,滑动列表的时候,如何上报曝光数据

1、需求如此这般:进入页面,缓存每次滑动可见的item数据,离开的时候上报曝光的缓存item2、问题:一般一个RecyclerView,每次上下滑动都会适配器中都会回调onCreateViewHolder和onBindViewHolder,只要在onBindViewHolder将item数据缓存起来,离开界面的时候上报曝光缓存就可以了,但是RecyclerView套嵌RecyclerView,上拉加载数据的时候,例如每次分页加载获取10条数据,里面的RecyclerView的适配器,就一次性将10条数据

2020-07-29 16:44:06 413

原创 RecyclerView套嵌RecyclerView,解决上拉刷新加载更多,卡顿问题

1 、RecyclerView套嵌RecyclerView,上拉加载数据太多导致数据处理耗时卡顿因为了外面RecyclerView在加载更多的时候会刷新列表,而里面的RecyclerView相当于外面RecyclerView的一个item,每次调用notifyDataSetChanged的时候,会导致里面的RecyclerView的适配器,将所有数据都会重新onCreateViewHolder和onBindViewHolder一遍,导致往后加载更多次数越多,就会卡顿。如下处理,加载更多的时候,对里面的R

2020-07-29 16:13:09 1407

原创 华为折叠屏从小屏启动APP,SHOW一个Dialog,显示问题

最近适配华为折叠屏的时间,遇到一个很坑的问题?1、UI设计如下:打开一个Activity从底部弹出Dialog,横屏的时候从右侧弹出Dialog,并右侧弹出Dialog宽为屏幕的一半如果杀死APP进程,从这折叠屏展开的到进入,是没问题的,界面显示正常,但是如果杀死进程,从折叠状态的屏幕进入,UI显示就有异常,DIalog显示横屏的时候右侧弹出的Dialog,原本设置的是为屏幕的一半,但是显...

2020-04-24 10:50:21 1226

原创 安卓中com.alibaba.fastjson.JSONException: illegal getter报错解决

某对象中有富文本Spannable对象,将该对象用fastJSON转化为json 字符串,保存在本地缓存,下次获取字符串,再用fastJSON解析为对象,获取Spannable,设置到TextView就会报com.alibaba.fastjson.JSONException: illegal getter异常。由于Spannable是不可序列化的对象,fastJson解析的对象,需要可序列化的,所...

2020-01-19 16:23:52 3935

翻译 Git使用流程

GIT的使用流程1 github注册流程1 进入github官网:https://github.com/2 注册一个自己的github账号3 右上角选择New repository4 进入create a new repository 选择你的仓库名填入: Repository name 必填:例如test Description描述: 对仓库的描述 可...

2019-11-28 15:02:43 88

原创 Http和Https的区别及连接过程

Http和Https的区别https协议需要Ca申请证书 http是超文本协议,信息是明文传输,https是安全的ssl加密明文传输 http和https使用的是不同的连接方式,端口也不一样,http是80开头的端口,https是443 http连接简单,访问速度快,https是SSL+http,需要验证及加密的,更加安全,但是访问速度慢http连接过程 域名解析——》发...

2019-10-22 10:36:29 1010

原创 Okhttp3的分析

前面有对Okhttp3的源码进行分析,也贴出了很多源码,但是感觉有点乱,今天我再次将整个流程梳理一遍okhttp调用大致分为四部分 第一步:创建一个okhttpClient对象,其内部是设计为builder构造者设计模式,设置一些参数,例如连接超时时间、读数据超时时间等 第二步:根据url及传入的参数或者requestBody获取Request对象...

2019-10-21 15:43:01 146

原创 Android 定向TAG in、out、inout

所有的非基本参数都需要一个定向tag来指出数据流通的方式,不管是 in , out , 还是 inout 。基本参数的定向tag默认是并且只能是 in 。对于这个定向tag我的心里是有一些疑问的。首先,数据流通的方式是指什么?其次, in , out , inout 分别代表了什么,它们有什么区别?很显然,官方文档并没有把这些东西交代清楚。那么我们还是从源码分析比较清晰。TAG in将ai...

2019-09-26 17:16:29 854

原创 Android中线程池

1、线程池有什么好处 1)降低资源消耗 2)提高响应速度, 3)提高线程的可管理性 4)减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务 2、基本线程池的几个参数含义public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, Ti...

2019-08-27 11:17:20 92

原创 Android View如何事件分发?

首先通过自定义的View的案例,通过打印的Log来学习下,事件是如何分发的?通过自定义个电子签名的View,来讲解如下为自定义电子签名板的HandWritingView:package com.yang.wx.androidtest.view7;import android.content.Context;import android.graphics.Bitmap;impo...

2019-08-22 15:56:35 109

原创 Android Studio 3.0以上版本JNI编程

平时使用JNI比较少,以前有项目在eclipse中使用过,今天尝试在Android studio中使用JNI,记录如下流程,如有不妥,请指正第一步:打开SDK manager,下载如下几个工具第二步:创建一个Android项目,在项目中新建一个jni接口的class,如下:public class StringJni { //加接口 public s...

2019-08-06 11:30:35 186

原创 java中synchronized修饰的同步锁范围

Java中synchronized可以在多线程下做线程安全的同步锁,本文针对synchronized的使用及使用范围进行实例讨论下面分别就对象锁和类锁进行分析对象锁非静态方法使用synchronized修饰的写法,锁定的是当前对象,例如实例一:public class Sync { private static final String TAG = "Sync"; ...

2019-07-09 16:16:30 305

原创 关于WebView的常见问题

1、Android 5.0 WebView中Http和Https混合内容 1.1 在Android5.0 中WebView默认不允许加载Http、Https混合内容,解决办法如下: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { webView.getSettings().setMixedConten...

2019-06-14 11:00:26 419

原创 Android 三大图片框架内存缓存策略

很早的时候大部分应用都使用ImageLoad作为应用图片处理框架,后来ImageLoad不再更新了,现Android进行图片处理的主流框架为:Picasso、Glide、Fresco一、图片缓存三级缓存:内存缓存、本地缓存、服务器缓存,先判断内存缓存是否存在,如果存在就获取内存缓存,如果不存在判断本地缓存是否存在,如果本地缓存存在获取本地缓存、如果本地不存在,获取服务器缓存Picass...

2019-05-27 14:13:21 286

转载 如何防止Android内存泄露

https://blog.csdn.net/unicorn97/article/details/81009204

2019-05-07 15:49:21 396

原创 Android内存优化

1、数据结构化 1.1、频繁字符串拼接用StringBuidler,用+拼接比Stringbuidler拼接速度慢很多,而且占用内存 1.2、ArrayMap 、SparseArray替换HashMap ArrayMap和SparseArray比HashMap速度快 ArrayMap和SparseA...

2019-05-07 14:23:32 85

转载 android常见的六种设计模式

转载自https://blog.csdn.net/u012583459/article/details/47079529由于项目变更的频繁性,作为一名程序员,我们需要掌握设计模式的必要性,就不言而喻~~,下面就是一些我自己学习的设计模式总结。接下来,主要是针对几个比较常用模式进行讲解,主要是以下几种: 观察者模式 适配器模式 代理模式 工厂模式 单例...

2019-04-26 15:37:32 319

转载 android的内存管理

Android内存管理机制1、基于Linux内存管理  Android系统是基于Linux 2.6内核开发的开源操作系统,而linux系统的内存管理有其独特的动态存储管理机制。不过Android系统对Linux的内存管理机制进行了优化,Linux系统会在进程活动停止后就结束该进程,而Android把这些进程都保留在内存中,直到系统需要更多内存为止。这些保留在内存中的进程通常情况下不会影响整...

2019-04-26 10:58:39 145

原创 Android Socket网络编程

今天简单记录下,android下的socket网络编程,socket网络编程最为广泛的为TCP协议和UDP协议一、基于TCP协议socket 服务器端首先声明一个ServcerSocket对象,并指定端口号,然后调用ServerSocket的accept()方法接口客户端发送的数据,accepter()方法在没有接收到数据时,一直是阻塞状态,一旦接收到数据了,会通过inputSt...

2019-04-26 10:19:15 331

翻译 Android布局优化

一、重用<include/>标签,可以在一个布局中引用另外一个布局,如果有好多布局中有相同的部分,例如:标题栏一样,可以标题栏单独弄出来,放在一个布局里,然后在其他要用的布局中用<include/>标签进行引用,好处是如果需要修改,可以统一修改二、合并减少套嵌1、尽量减少布局有太多层级,尽量扁平化。2、在不影响层级下,使用LinearLayout不使用R...

2019-04-19 14:57:00 84

原创 如何用hibernate-validator进行参数校验

第一步:pom.xml引入依赖&lt;dependency&gt; &lt;groupId&gt;org.hibernate&lt;/groupId&gt; &lt;artifactId&gt;hibernate-validator&lt;/artifactId&gt; &lt;version&gt;5.2.4.Final&lt;/version&gt;&l

2019-01-10 16:01:54 336

原创 用maven的 Mybatis代码生成器

最近学习了用maven的mybatis自动生成代码,记录下第一:pom.xml配置&lt;dependencies&gt;&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/ar...

2019-01-07 16:43:40 150

原创 springboot 打war发布到linxu服务器报404

1、springboot如何打war包?      第一步 启动的Application:@SpringBootApplicationpublic class MsServiceApplication{ public static void main(String[] args) { SpringApplication.run(MsServiceApplica...

2019-01-04 16:29:44 212

原创 java.lang.NoSuchMethodError: No static method canonicalize报错

 Process: com.huiyi.nypos.pay, PID: 21364                                                                     java.lang.NoSuchMethodError: No static method canonicalize(Ljava/lang/String;Ljava/lang/St...

2018-07-13 13:34:04 986

很方便的取颜色神器,开发助手

鼠标移动到图片,可以获取图片颜色的RGB值,很方便,开发小助手,希望可以提供给伙伴们帮助.

2020-03-09

ProductFlavorsTest.zip

Android studio 使用productFlavors进行多渠道打包,包括代码、资源文件等多渠道打包

2019-08-06

JNIApp.zip

Android studio3.0以上JNI DEMO,希望对大家有帮助

2019-08-06

RSA加解密生成DLL调用

delphi的RSA的加解密,delphi生成dll,然后demo调用该dll进行加解密

2018-12-05

安卓开小图标

安卓开发丰富的小图标,希望在安卓开发中对你有用。

2014-05-22

动画分割器

格式为gif的动画进行分割,分割的图片为png格式

2014-05-22

空空如也

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

TA关注的人

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