自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

章鱼老李的博客

我是一条章鱼

  • 博客(39)
  • 收藏
  • 关注

原创 SharedPreference ANR优化

SharedPreference ANR优化Google 在设计之初为了方便开发者,实现了一套轻量级的数据持久化方案——SharedPreference(以下简称 sp),因为其简便的 API,方便的使用方式,得到开发者的青睐,对其依赖越来越重。在应用版本不断迭代的过程中发现 Google 说的轻量级的数据存储是有原因的,越是重量级的应用出现的 ANR 问题越严重。SP 导致 ANR 原因分析问题1:sp 文件创建以后,会单独的使用一个线程来加载解析对应的 sp 文件。但是当 UI 线程尝试访问 sp

2021-05-26 10:26:24 336 1

原创 Android viewpager嵌套使用

两个viewpager嵌套使用时,不希望内部viewpager滑动到最后一个继续左滑去引起外部viewpager滑动class KnowledgeViewPager(context: Context?, attrs: AttributeSet?) : ViewPager(context, attrs) { var mParentViewPager: ViewPager? = null override fun dispatchTouchEvent(ev: MotionEvent?):

2020-12-29 18:28:50 525

原创 自定义控件收藏

1.TastyToasthttps://github.com/yadav-rahul/TastyToast 2.MaterialSearchBarhttps://github.com/mancj/MaterialSearchBar

2018-05-09 10:37:37 250

原创 Android 子线程修改UI方法对比

Android 子线程修改UI方法对比在Android 开发中经常是在子线程中获取数据或者处理数据,然后修改UI显示,修改UI一般有四种方法: 1.Handler()的handleMessage()和handler.sendMessage(msg) 2.handler.post(runnable)和handler.postDelayed(runnable,milliseconds) 3...

2018-04-09 15:13:55 443

原创 DialogFragment.show()遇到的坑

DialogFragment.show()遇到的坑昨天app发版上线,测试和我说注册页面点击页面按钮时崩溃了,我说不可能啊,注册页面代码我都N年没动过了,怎么会不能用了,我调试了一下,看了下日志,发现下面这个错误:04-04 08:45:37.726 30098-30098E/AndroidRuntime: FATAL EXCEPTION: main Process: co...

2018-04-04 10:58:52 12911

转载 序列化Serializable和Parcelable的理解和区别

一、android为什么要序列化?什么是序列化,怎么进行序列化why为什么要了解序列化?—— 进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递。what什么是序列化 —— 序列化,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储...

2018-03-06 09:43:03 314

转载 int和Integer的区别

int和Integer的区别 1、Integer是int的包装类,int则是java的一种基本数据类型 2、Integer变量必须实例化后才能使用,而int变量不需要 3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 4、Integer的默认值是null,int的默认值是0延伸: 关于Integer和...

2018-03-05 11:38:56 197

转载 Android APP启动时出现白屏或者黑屏解决方案

1、为什么APP启动时会出现白屏或者黑屏?当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要时间,在这个动作完成之前系统要做什么呢?如果没有任何反应的话,如果程序初始化的时间很长,用户可能还以为没有点到相应的位置。但此时所启动的程序还没初始化完,既无法显示程序,又不能停在原处不做任何动作,...

2018-02-24 08:58:05 1061

转载 Java 集合系列18之 Iterator和Enumeration比较

概要这一章,我们对Iterator和Enumeration进行比较学习。内容包括:第1部分 Iterator和Enumeration区别第2部分 Iterator和Enumeration实例转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311275 第1部

2018-01-17 10:53:08 172

转载 Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例

概要这一章,我们对TreeSet进行学习。我们先对TreeSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeSet。内容包括:第1部分 TreeSet介绍第2部分 TreeSet数据结构第3部分 TreeSet源码解析(基于JDK1.6.0_45)第4部分 TreeSet遍历方式第5部分 TreeSet示例转载请注明出处:http:

2018-01-17 10:52:23 227

转载 Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例

概要这一章,我们对HashSet进行学习。我们先对HashSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashSet。内容包括:第1部分 HashSet介绍第2部分 HashSet数据结构第3部分 HashSet源码解析(基于JDK1.6.0_45)第4部分 HashSet遍历方式第5部分 HashSet示例转载请注明出处:http:

2018-01-17 10:51:37 211

转载 Java 集合系列15之 Set架构

前面,我们已经系统的对List和Map进行了学习。接下来,我们开始可以学习Set。相信经过Map的了解之后,学习Set会容易很多。毕竟,Set的实现类都是基于Map来实现的(HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。首先,我们看看Set架构。 (01) Set 是继承于Collection的接口。它是一个不允许有重复元素的

2018-01-17 10:50:57 184

转载 Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)

概要学完了Map的全部内容,我们再回头开开Map的框架图。 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=331

2018-01-17 10:50:18 173

转载 Java 集合系列13之 WeakHashMap详细介绍(源码解析)和使用示例

概要这一章,我们对WeakHashMap进行学习。我们先对WeakHashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用WeakHashMap。第1部分 WeakHashMap介绍第2部分 WeakHashMap数据结构第3部分 WeakHashMap源码解析(基于JDK1.6.0_45)第4部分 WeakHashMap遍历方式第5部分 WeakH

2018-01-17 10:48:58 184

转载 Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例

概要这一章,我们对TreeMap进行学习。我们先对TreeMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeMap。内容包括:第1部分 TreeMap介绍第2部分 TreeMap数据结构第3部分 TreeMap源码解析(基于JDK1.6.0_45)第4部分 TreeMap遍历方式第5部分 TreeMap示例转载请注明出处:http:

2018-01-17 10:48:03 303

转载 Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例

概要前一章,我们学习了HashMap。这一章,我们对Hashtable进行学习。我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable。第1部分 Hashtable介绍第2部分 Hashtable数据结构第3部分 Hashtable源码解析(基于JDK1.6.0_45)第4部分 Hashtable遍历方式第5部分 Ha

2018-01-17 10:45:45 185

转载 Java 集合系列10之 HashMap详细介绍(源码解析)和使用示例

概要这一章,我们对HashMap进行学习。我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap。内容包括:第1部分 HashMap介绍第2部分 HashMap数据结构第3部分 HashMap源码解析(基于JDK1.6.0_45)    第3.1部分 HashMap的“拉链法”相关内容    第3.2部分 HashMap的构造

2018-01-12 15:04:43 246

转载 Java 集合系列09之 Map架构

概要前面,我们已经系统的对List进行了学习。接下来,我们先学习Map,然后再学习Set;因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。首先,我们看看Map架构。如上图:(01) Map 是映射接口,Map中存储的内容是键值对(key-value)。(02) Abstrac

2018-01-12 15:03:05 196

转载 Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

概要前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack)。Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法) Java 集合系列05之 LinkedList详细介绍(源码

2018-01-12 15:02:14 183

转载 Java 集合系列07之 Stack详细介绍(源码解析)和使用示例

概要学完Vector了之后,接下来我们开始学习Stack。Stack很简单,它继承于Vector。学习方式还是和之前一样,先对Stack有个整体认识,然后再学习它的源码;最后再通过实例来学会使用它。内容包括:第1部分 Stack介绍第2部分 Stack源码解析(基于JDK1.6.0_45)第3部分 Vector示例转载请注明出处:http://www.cnblogs

2018-01-12 15:01:24 155

转载 Java 集合系列06之 Vector详细介绍(源码解析)和使用示例

概要学完ArrayList和LinkedList之后,我们接着学习Vector。学习方式还是和之前一样,先对Vector有个整体认识,然后再学习它的源码;最后再通过实例来学会使用它。第1部分 Vector介绍第2部分 Vector数据结构第3部分 Vector源码解析(基于JDK1.6.0_45)第4部分 Vector遍历方式第5部分 Vector示例转载出处:

2018-01-12 15:00:41 346

转载 Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例

概要 前面,我们已经学习了ArrayList,并了解了fail-fast机制。这一章我们接着学习List的实现类——LinkedList。和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码;最后再通过实例来学会使用LinkedList。内容包括:第1部分 LinkedList介绍第2部分 LinkedList数据结构第3部分

2018-01-12 14:59:27 253

转载 Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)

概要前面,我们已经学习了ArrayList。接下来,我们以ArrayList为例,对Iterator的fail-fast机制进行了解。内容包括::1 fail-fast简介2 fail-fast示例3 fail-fast解决办法4 fail-fast原理5 解决fail-fast的原理转载请注明出处:http://www.cnblogs.com/skywan

2018-01-12 14:58:14 187

转载 Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例

概要上一章,我们学习了Collection的架构。这一章开始,我们对Collection的具体实现类进行讲解;首先,讲解List,而List中ArrayList又最为常用。因此,本章我们讲解ArrayList。先对ArrayList有个整体认识,再学习它的源码,最后再通过例子来学习如何使用它。内容包括:第1部分 ArrayList简介第2部分 ArrayList数据结构第3部分 ArrayList

2018-01-12 14:57:03 245

转载 Java 集合系列02之 Collection架构

概要首先,我们对Collection进行说明。下面先看看Collection的一些框架类的关系图:Collection是一个接口,它主要的两个分支是:List 和 Set。List和Set都是接口,它们继承于Collection。List是有序的队列,List中可以有重复的元素;而Set是数学概念中的集合,Set中没有重复元素!List和Set都有它们各自的实现

2018-01-12 14:54:35 161

转载 Java 集合系列01之 总体框架

Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)、。Java集合工具包框架图(如下):大致说明:看上面

2018-01-12 14:52:50 202

转载 HashMap实现原理

Hash ,一般翻译做“ 散列” ,也有直接音译为“ 哈希” 的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不 同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。HAS

2017-12-25 16:24:42 177

转载 Java动态原理--绑定机制的内幕

在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码? 这里面到底有什么内幕呢? 这篇文章我们就将揭露JVM方法调用的静态(static binding) 和动态绑定机制(auto binding) 。  ★ 静态绑定机制Java代码  //被调用的类  package hr.test;  class Father{

2017-12-18 10:49:04 821

转载 插件化开发之发展历史及特性区别总结

引言先简单介绍一下Android插件化。很早之前已经有公司在研究这项技术,淘宝做得比较早,但淘宝的这项技术一直是保密的。直到2015年才陆续出现很多框架,Android插件化分成很多技术流派,实现的方式都不太一样。发展历史首先,要记住2012年这个时间点。2012年的时候,就有人做插件化技术,是大众点评的屠毅敏,他推出了AndroidDynamicLoader框架,用Fragment来

2017-12-13 14:22:41 1157

转载 Android 数据持久化技术(即数据存储方式)

在讨论数据持久化技术之前我们先了解几个概念?什么是瞬时数据:存储在内存当中,有可能会因为程序的关闭或其他原因导致内存被收回而丢失的数据。 为什么采用数据持久化技术:为了保证关键数据在程序退出时不被丢失。 什么是数据持久化技术:将内存中的瞬时数据保存到存储设备中,保证手机在关机的情况下数据仍然不会丢失。 安卓提供了三种方式用于简单的数据持久化功能:文件储存,SharedPreference存储,数据...

2017-12-13 09:25:49 522

原创 Android插件化学习

最近在研究Android 插件化开发,大神“伯努力不努力”的博客写的很好,在此献上膝盖,特此推荐,想了解插件化开发的同学可以看一看大神的博客!大神博客地址:http://blog.csdn.net/u012124438/article/category/6529583Android插件化学习之路(一)之动态加载综述 Android插件化学习之路(二)之ClassLoader完全解析

2017-12-13 09:12:42 625 2

转载 ButterKnife框架原理和使用

大部分Android开发者应该都知道@JakeWharton 大神的ButterKnife注解库,使用这个库我们可以不用写很多无聊的findViewById()和setOnClickListener()等代码。 ButterKnife项目的主页在这里:http://jakewharton.github.io/butterknife/ 简单介绍一下使用方法:public class Exam

2017-11-29 15:11:53 324

转载 java的四种引用方式

Java的四种引用方式java内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指向该对象。java对象的引用包括  强引用,软引用,弱引用,虚引用Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;第二是有利于JVM进行垃圾回收。下面来阐述一下这四种类型引用的概念:1.强引用 是指创建一个对象并把这个对象赋给一

2017-11-29 09:55:25 304

转载 Android加密算法

基本需求及概念随着Internet网的广泛应用,信息安全问题日益突出,以数据加密技术为核心的信息安全技术也得到了极大的发展。目前的数据加密技术根据加密密钥类型可分私钥加密(对称加密)系统和公钥加密(非对称加密)系统。对称加密算法是较传统的加密体制,通信双方在加/解密过程中使用他们共享的单一密钥,鉴于其算法简单和加密速度快的优点,目前仍然是主流的密码体制之一。最常用的对称密码算法是数

2017-11-24 15:37:43 280

转载 sqlite数据库加密方案

针对sqlite数据库文件,进行加密。现有两种方案如下1.对数据库中的数据进行加密。2.对数据库文件进行加密两种加密方式的优缺点,比较如下:一、对数据库中的数据进行加密优点:1.实现数据加密快速,只需添加两个方法一是:对明文数据进行加密返回密文数据二是:对密文数据进行解密返回明文数据2.程序无需进行太大变动,仅在对数据进行添加,修改,删除,查询时。针

2017-11-24 15:34:01 9845 1

转载 万能Interface实现Fragment之间的通讯

实现两个Fragment之间的通讯方法有很多种,如:EventBus:使用方便,但其使用的是反射原理,会有稍微的延迟,并且他人维护不方便;static静态变量:使用方便,但是,每个static变量都会占用一块内存区,Android系统分配给每个App的内存是有限的(63M),过多很容易造成App内存溢出;广播Broadcast Receiver:Android的广播是有限制

2017-11-21 11:15:21 491 1

转载 IntentService使用详解和实例介绍

IntentService定义  IntentService继承与Service,用来处理异步请求。客户端可以通过startService(Intent)方法传递请求给IntentService。IntentService在onCreate()函数中通过HandlerThread单独开启一个线程来依次处理所有Intent请求对象所对应的任务。       这样以免事务处理阻塞主线程

2017-11-03 16:36:09 418

原创 AsyncTask

前言什么是AsyncTask,相信搞过Android开发的朋友们都不陌生。AsyncTask内部封装了Thread和Handler,可以让我们在后台进行计算并且把计算的结果及时更新到UI上,而这些正是Thread+Handler所做的事情,没错,AsyncTask的作用就是简化Thread+Handler,让我们能够通过更少的代码来完成一样的功能,这里,我要说明的是:AsyncTask只是

2017-06-13 16:19:25 456

原创 Android EditText控制小数点位数及输入限制工具类

项目开发中总是遇到输入框小数点限制的问题 所以就自己封装了一个工具类 而且还限制了错误输入的问题

2017-06-12 12:11:49 668

空空如也

空空如也

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

TA关注的人

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