- 博客(81)
- 资源 (8)
- 收藏
- 关注
原创 你真的了解Handler嘛?
目录1.Handler是什么2.了解Handler的使用2-1.Handler可以直接“new”吗?2-2.具体使用2-3.主要看一下sendMessage做了些什么2-3-1.target绑定之后做了什么2-3-2.如何发送一个异步消息2-3-3.消息是何如入队的2-3-4.消息是如何出队的3.结合代码进一步研究3-1.求证“1”的结论3-1-1.首先,打开ActivityThread中的main方法3-1-2.在主线程中,Looper创建过程中,做
2021-08-23 14:33:19 256
原创 【数据结构】单链表
10分钟学会单链表视频单链表:一种链式的数据结构,每个数据相当于一个节点。(data,next)-(data,next)-(data,next)...节点=元素+指针(data,next)元素=节点中的真正数据(data);指针指向下一个节点(next)。单链表的优缺点 list集合优缺点优点:插入删除速度快...
2018-11-03 17:00:33 219
原创 【HashMap】HashMap底层数据结构
10分钟学会HashMap底层视频分析<点击>HashMap:散列表集合,实现了Map接口,Map又实现了Iterator接口。遍历Map可以用Iteratoer实现,也可以用Entry(HashMap内部类)实现两种实现方式:while(iterator.hasNext)for(map.Entry entry : map.getEntrySet())数据结构:数组+链...
2018-10-31 10:23:22 4195
原创 【同步】volatile关键字
volatile是一种比sychronized关键字更轻量级的同步机制访问volitile变量时,不会执行加锁操作访问非volitile变量时,每个线程会从系统内存(主内存)拷贝变量到工作内存中,然后修改工作内存中的变量值,操控的变量可能不同,造成混乱。volatile修饰的变量,是直接拿的主内存的值,就是说这个值永远是最新的,对其他线程是可见的。volatile的读写操作是原子性...
2018-10-30 15:05:56 240
原创 【网络】Http协议必读
HTTP简介:HTTP:超文本传输-协议,基于TCP/IP通信协议来传输数据。http工作原理:客户端-服务端架构,客户端通过URL向http服务端发送请求,服务端接收到请求后,向客户端发送响应信息。http默认端口号80。http三个特点http是无连接的,限制每次连接只处理一个请求,服务器处理完客户端请求,并受到客户端的应答后,断开连接,节省传输时间;http是媒体独立的,客户端和...
2018-10-24 17:43:05 1269
原创 【RecyclerView】RecyclerView之Adapter
概述 说起Adapter,网上一堆文章,讲得很详细,这篇文章就来记录一下Adapter里的观察者设计模式。RecyclerViewDataObserver(观察adapter的变化) 观察者,继承抽象类AdapterDataObserver。adapter变了,观察者就要做出对策。那么怎么知道adapter变化了?AdapterDataObserverable(通知观察者ada...
2018-06-09 12:18:06 966
原创 【RecyclerView】RecyclerView之概述
来源 这是v7包下的一个控件,android studio添加依赖implementation 'com.android.support:recyclerview-v7:26.1.0',源码的注释:A flexible view for providing a limited window into a large data set(一个灵活的,可以在有限的窗口中展示大量的数据集合的视图)。...
2018-06-09 09:27:25 200
原创 【RecyclerView】RecyclerView之Recycler
视图资源回收(Recycler) ·基本文档解释 负责管理废弃的或者已经分离的item视图,使视图重用。 “scarpped”的定义:仍然附着在RecyclerView上,但是被标记用于移除或者复用。 由LayoutManager使用Recycler的典型用途是,获得适配器数据集的视图,该视图用于表示给定位置和item的ID的数据。 如果被复用的视图,被认为是“dirt...
2018-06-06 12:49:32 480
原创 【入门】Spring-Boot项目配置Mysql数据库
前言前面参照SpringBoot官网,自动生成了简单项目点击打开链接配置Mysql数据库在pom.xml添加依赖<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId&g...
2018-06-04 14:28:03 41305 7
原创 【排序】选择排序
标准的选择排序 /** * 选择排序 * 原理:每次都选出最小值,依次赋给数组位置:0,1,2...... */ public void sort4() { int[] a = new int[]{1, 4, 3, 6, 8, 9, 14, 15, 21, 21}; for(int i = 0; i < a.length ...
2018-05-29 15:15:37 202
原创 【入门】搭建一个Spring-Boot项目
Spring官网详细介绍https://projects.spring.io/spring-boot/特点(官方解释有道翻译)创建独立的Spring项目;直接嵌入TomCat、Jetty或底层,不需要不熟WAR文件;提供自用的启动器,简化Maven配置;在可能的情况下自动配置Spring;提供生产就绪的特性,如量度、健康检查和外部化配置;绝对没有代码生成,也不需要XML配置。创建一个Spring-...
2018-05-14 09:35:58 1367 2
原创 异常分类
异常分为两大类:Error,Exception。父类都是ThrowableError:程序发生错误,导致程序终止,捕捉不到。发生在运行时期。情景1:误写代码,比如:少了一个字母;少了一个分号。报错:找不到XX;添加“;”。情景2:误删代码,比如:删了A类;删了b方法。报错:找不到A类;找不到b方法。Exception又分为Runtime Exception(运行时异
2017-11-29 14:27:14 1602
原创 补间动画代码实现
补间动画(Tween Animation):位移,渐变,旋转,缩放动画。GitHub下载效果图:建议用xml控制动画,代码简单,不做介绍,简单说一下属性Alpha属性JAVA方法XML属性解释AlphaAnimation(float fromAlpha,…)android:fromAlpha动画
2017-11-21 17:03:30 622
原创 动画的概念
一、动画概述 一共分为两部分,传统动画和属性动画,传统动画又分为帧动画和补间动画。二、传统动画 帧动画 概念:多张图片连环播放。自行脑补一下小人书的效果吧。 特点:一帧一帧的,可以实现复杂的效果。 补间动画 概念:位移、渐变、旋转、缩放动画。 特
2017-11-16 16:31:00 1574
原创 Activity被系统杀死,数据的存储与恢复
以V7包中的AppCompatActivity为例,保存数据的方法,onSaveInstanceState(Bundle outState)触发条件:用户没有退出程序,比如按了home键,电源键,旋转Activity等。这种数据保存都是临时的。如果想保存一些持久数据,用onPause
2017-07-26 15:23:30 2418
原创 【Activity】Activity的四种加载模式
Activity的四种加载模式:standard、singleTop、singleTask、singleInstance<一>standard 默认模式,不需要配置launchMode 每次都创建了该Activity的新实例 按回退键,按照之前创建Activity实例的倒序依次出现,类似退栈的操作,而之前跳转Activity的过程是压栈的操作...
2017-07-21 14:57:59 442
原创 【注解】动态代理模式的好伙伴
一、回顾 上篇文章,动态代理模式:代理访问接口对象,根据参数,反射出代理类,执行接口方法。二、注解 通过反射,得到实例,执行注解方法。为什么使用注解呢? 1、一方面减少配置文件,如果自身做过java,肯定知道Spring框架中的@Service,只要在配置文件写入<!-- 自动扫描注解的bean --> <context:component-scan base-package="service" /> 就会自动扫描了。
2017-06-20 10:58:16 739
原创 【设计模式】代理模式Proxy---动态代理
上一篇说到的静态代理,但是有新的接口,就需要新的代理,那么我们需要一个动态代理。java.lang.reflect包里,有个封装类Proxy,正好解决这个问题。 有很多很多的人都说过Proxy,无非就是这行代码的作用,根据参数(接口),以反射机制生成动态代理,执行相应接口方法。/** * 公共接口 * @author Biligle * */public interface IPublicManager { /** * 排水 */ void out(); /** * 发电
2017-06-16 11:47:40 712
原创 【设计模式】代理模式Proxy---静态代理
一、代理模式的理解 代理访问对象,执行方法。二、举个例子:环保公司帮工厂做污水处理。 1、工厂和环保公司,签了污水处理合同。 这里,需要做两件事,创建接口IPublicManager,创建实现类ImpOut。/** * 需求:公共接口类 */public interface IPublicManager { void out();//污水排出工厂 }
2017-06-14 13:40:23 1598 2
原创 Activity生命周期实践
Activity生命周期onCreate:运行状态,用户看不到界面。开启Activity,并且创建了新实例,调用此方法。onStart:可见状态。用户可以看到界面。onRestart:重新可见状态。onResume:用户交互状态。通俗讲,用户的点击事件,在这里会被执行,直到触发了onPause......
2017-06-03 18:28:19 874
原创 轻便型轮播图---CleverBanner
CleverBanner的功能:无限滑动、指示点(颜色,大小、背景、透明度可控)、自动播放(时间、是否播放可控)。 网上很多轮播图的库,但是体积有点儿大,写的很复杂的样子,于是决定自己封装一个,其实自己写库,很简单。编写属于自己的库,参考http://blog.csdn.net/qq_29266921/article/details/51917498
2017-04-28 15:00:00 1138 4
原创 快速接口测试---PostMan插件
移动开发进入调试接口的阶段,如果遇上一个编写后台接口的大马虎,往往是很难熬的,数据出了问题,这时候,后台犯懒,再三要求移动端打断点去排查。。。很不爽。 那么,我们需要这样一个工具,很简单的就可以进行接口调试,Postman。
2017-04-28 14:25:40 486
原创 【自定义之前】自定义之前:onTouchEvent
自定义需求:1.刚进入界面外层布局,自动下滑一段距离,露出内层布局。2.外层布局可以上下滑动,并且带有透明度渐变效果,改变内边距效果。
2017-03-10 15:24:00 704 2
原创 【自定义】ViewGroup初探
一、简述ViewGroup:视图容器,顾名思义用于盛放视图的。Android的6大布局,都是自定义ViewGroup,因为都继承了ViewGroup。此文,先不介绍自定义ViewGroup,先观察一下6大布局是怎么重写ViewGroup的。打开LinearLayout,ctrl+o操作,看一下类里面的方法和结构,除了有很多方法,还包含LayoutParams类。依次打开其他布局,发现都有这个LayoutParams:布局参数。
2017-02-15 17:34:27 281
原创 【跨进程】跨进程通信---AIDL
1、AIDL2、BroadCast3、ActivityAIDL(Android Interface Defition Language),对外暴露自身接口(该接口只支持方法,不支持常量),用到了Service。上篇关于广播的文章,为了增加难度也使用了Service。AIDL:客户端bindService(...)开启服务,unBindService()关闭服务。如果系统自动调用onDestroy(...
2017-02-14 12:05:38 884
原创 【跨进程】跨进程通信---BroadCast(广播)
BroadCast是被动跨进程通信,只能被动接收访问。实际开发中常用来做什么?1.监听短信,监听来电,监听网络。2.可以增强APP之间的互动,和用户粘性。不过个人认为这个很没必要,增加粘性,最简单的方法是推送举个栗子:两个程序:A程序和B程序,A发送广播,B接收广播。
2017-02-10 18:08:33 2850
原创 【跨进程】跨进程通信---Activity
Acticity的跨进程访问,简单说就是跳转,用到Intent。注意:跳转不需要指定Context对象和Activity的Class对象。而是指定Action,有的需要Uri。错误姿势:Intent Intent = new Intent(this,BActivity.class);startActivity(intent);正确姿势(打电话):Intent intent = n
2017-02-10 10:17:57 1528 3
原创 【设计模式】Builder模式
Builder模式:(对外部隐藏构建细节)将对象的构建过程和它的表示隔离,同样的构建过程,创建不同的表示。典型用例:ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder( context).threadPriority(Thread.NORM_PRIORITY - 2)
2017-02-07 14:08:54 289
原创 【设计模式】工厂模式
定义:用于创建对象的接口,让子类决定实例化哪个类 使用场景:生成复杂对象使用 代码实现:public abstract class Factory { public abstract void init(); public T product; public D store;}public abstract class Product { /**
2017-02-07 08:57:53 208
原创 【Android通讯】Android线程间通讯
Android程序中,线程分为主线程(UI thread)和工作线程(work thread)。我们要遵循单线程模型原则:安卓UI的操作线程不安全,安卓UI的操作必须在主线程进行。1、多线程任务开发可以通过以下几个方式实现:Handler、AsyncTask。详见:http://blog.csdn.net/qq_29266921/article/details/548932542、如果子线程的数据...
2017-02-06 17:30:18 300
原创 【Android通讯】多线程任务开发
多线程任务开发可以通过以下几个方式实现:1、Handler,如下:public class MainActivity extends AppCompatActivity { private MyHandler mHandler = new MyHandler(this); private TextView mTextView ; pri
2017-02-06 17:00:06 356
原创 【内存泄漏】Android内存泄漏---资源未关闭
对于使用了BraodcastReceiver,ContentObserver,File,Cursor,Stream,Bitmap等资源的使用,应该在Activity销毁时及时关闭或者注销,否则这些资源将不会被回收,造成内存泄漏
2017-02-04 11:08:12 645
原创 【内存泄漏】Android内存泄漏---Handler
Handler我们经常用在程序中,发送消息,然而这里涉及到内存泄漏隐患,非静态内部类引起的。非静态内部类引起内存泄漏,详见http://blog.csdn.net/qq_29266921/article/details/54847402举个栗子:public class MainActivity extends AppCompatActivity { priv
2017-02-04 10:59:45 422
原创 【内存泄露】Android内存泄漏---非静态内部类创建静态实例
有时候程序会重复使用资源,我们只需要创建一个实例就可以,避免重复创建实例,占用内存。这看起来,并不会产生内存泄漏,然而非静态内部类,写在Activity里就会出现问题了,Activity的生命周期导致的内存泄漏。举个栗子:public class MainActivity extends AppCompatActivity { private static I
2017-02-03 16:49:21 1031
原创 【内存泄漏】Android内存泄漏---单例内存泄漏
单例模式应用普遍,全局只有一个对象,生命周期和Application一样长。那么问题来了,生命周期问题,可能导致内存泄漏。举个栗子:存在内存泄漏(context对象)public class Single{ private static Single instance; private Context context; private
2017-02-03 15:14:29 531
原创 【闲谈】尔非我
所谓命,即是时间和空间的来回穿梭。我的时空遇到你,是巧合吗?有人说,是命,上辈子已经注定好的。若这般,我也就不再那么多惆怅,你我相盼就好。然而,尔非我。我怎知你今天如何,明天又如何。你呢?想必也未知。过于信命,就好像练了邪功,会走火入魔。有一段时间,我信了命,变得消极。我驻足不前,看着时间流逝,那时候,脑中就一个念头:耗着吧,等到天荒地老,你便来了。
2017-01-13 16:48:30 262
原创 【性能优化】性能优化---Hierarchy Viewer的使用
Hierarchy Viewer是Android自带的、检测UI的可视化工具,它可以检测UI的耗时。上干货。使用方法:打开Hierarchy Viewer打开虚拟机,运行你的程序黑屏很久,等一会儿就好了结果如图:如何看懂?使用起来很简单,但是如何运用到实际上呢?怎么知道什么样的UI耗时,什么样的UI不耗时呢?举个栗子:
2017-01-11 16:13:26 458
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人