自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android在路上

Android在路上

  • 博客(20)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android 手写数据库框架

前言在Android开发中,一定会遇到数据库sqlit的操作的,如果你的项目中没有用到数据库那么说明你的项目很失败。一般我们可以直接使用系统提供的sqlit操作完成数据库的操作,同时也可以使用现在比较多的数据库开源框架,比如GreenDAO OrmLitem等数据库框架,都是直接将对象映射到sqlit数据库的ORM框架。在这篇文章中我们将自己动手写一个ORM框架,自定义一个属于我们自己的ORM数据

2017-09-13 23:13:05 553

原创 Android 切面编程

1、前言做过JavaEE开发对切面编程AOP思想应该比较熟悉,而Android这方面使用的就比较少,所以这篇文章就带领大家入门Android AOP2、介绍可能我们比较熟悉的就是OOP思想了,同样AOP也是一种编程思想。在OOP中我们将功能统一成模块,一个功能一个模块。但是有时候难免会遇到这样的情况,有这么一个功能,其他的功能有需要用到这个功能。也就是说这个功能是横跨所有功能的,比如log功能,那么

2017-09-11 17:10:29 504

原创 Fragment延迟加载

/** * Created by xz on 2017/4/10. */public abstract class BaseFragment extends Fragment { /** 是否第一次显示 */ private boolean isFirstVisible = true ; /** 是否第一次不显示 */ private boolean isFirs

2017-04-10 09:41:40 676 1

原创 Socket与HTTP解析

1.网络基础网络分层:计算机网络分层模型有两种OSI参考模型TCP/IP参考模型 网络层:根据IP查找到目的地址的主机 运输层:通过端口把数据发送给目的主机,实现进程间通信2.端口端口规定有16位,及计算机有2的16次方65536个端口。3.C/S架构定义:即客户端/服务端,软件体系架构作用:利用客户端和服务端的硬件资源,将任务合理的分配到客户端和服务端来实现,降低开销 Soc

2017-02-15 16:57:30 5474

原创 ThreadPool线程池

1.使用ThreadPool的优点合理的使用线程池有以下优点降低资源的消耗,通过重复使用已创建的线程降低创建线程和销毁线程带来的开销提高任务的响应速度,有新任务到来时不需要去等待创建线程就可以立即执行统一管理线程,线程是稀缺资源,如果无限的创建线程不但带来资源的消耗,还会使系统不稳定,线程统一管理和监控线程。2.ThreadPool的创建在Java中可以通过以下方式创建线程池//创建一个定时

2017-02-14 13:34:28 704

原创 ThreadLocal使用和源码分析

1.ThreadLocal是什么?从名字可以看出来是线程局部变量的意思。ThreadLocal的功能非常简单,就是为每一个访问该变量的线程创建一个副本,使每一个线程可以独立的改变自己线程的副本,而不会和其他线程的副本有冲突。从线程的角度来看,就好像每个线程都有这个变量,当线程消失时,该副本也会被扔到GC中等待垃圾回收。2.ThreadLocal API介绍initialValue方法protec

2017-02-13 17:25:46 378

原创 HashMap 源码分析

HashMap 源码分析1.概述HashMap继承AbstractMap抽象类,实现了Cloneable和Serializable接口,允许null键和null值,映射是无序的,线程是不同步的。如果想要线程同步,可以通过Collections类的静态方法synchronizedMap来获取同步线程。Map map = Collections.synchronizedMap(new HashMap()

2017-02-13 14:34:16 292

原创 Handler机制源码分析

Handler机制分析1.构造函数Handler的构造函数有四个,在构造函数中获取了Looper对象和MessageQueue消息队列 每个Handler对应一个Looper对象和MessageQueue对象让Handler处理消息有两种方法:向Handler构造方法中传入Handler.Callback对象,并实现Handler.Callback的handleMessage方法无需向Ha

2017-02-09 13:31:48 421

原创 Android5.0隐式启动服务

Android5.0隐式启动服务在Android 5.0中系统禁止我们通过隐式意图启动service,如果通过隐式意图启动会报异常,所以需要通过显式意图启动service,如果要被启动的服务在本应用中,还可以通过显式意图启动,但是如果是要启动其他应用的service,那么如何通过显式意图来启动呢?下面介绍一个方法用于通过显示意图启动其他应用中的servicepublic static Intent

2017-01-17 21:42:26 1267

原创 Android内存

Android内存垃圾回收器的职责 1、分配内存 2、确保任何能被引用的对象保留在内存中 3、回收不能通过引用关系找到的对象的内存相关概念垃圾回收GC垃圾回收器中有一个进程来做上面的这些事情,这个进程查找对象引用的关系并释放内存,这个进程就是常说的GCHeap和StackHeap内存称为堆内存,指Java运行环境用来分配给对象和JRE类的内存,是引用的内存空间Stack

2017-01-13 17:22:04 441

原创 Android 仿微信聊天图片

前言在微信的聊天界面中,发送图片的时候显示图片如下,下面就来看看如何实现 实现首先我们自定义一个ImageView用于显示聊天界面中的图片。 自定义ChatImageView继承ImageView,代码如下public class ChatImageView extends ImageView { private Context context ; public ChatImag

2016-11-30 15:52:46 2488

原创 Dagger2注入原理解析

在上篇博客中我们介绍了Dagger2该如何在项目中使用,这篇博客将继续分析Dagger2实现的原理,代码依然采用上篇的代码,看这里。Dagger2的注入原理原理的讲解我们通过小明来带我们学习。小明在看了MVP的实战解析和Dagger2的使用后知道了Dagger2该如何在MVP模式中使用,但是小明是一个要求上进的好同学,小明并不满足于如何使用,小明想钻研钻研源码,看看如何实现的。小明在钻研Dagger

2016-08-12 15:29:05 6969 11

原创 Dagger2使用解析

前言现在Dagger2在项目中的使用越来越多,Dagger2是Dagger的升级版本,Dagger没有使用过,但是本篇说的是Dagger2,主要讲解的是Dagger2是如何使用的。对了,忘了说Dagger其实是一个 依赖注入的框架。什么是依赖注入依赖注入是一种面向对象的编程模式,它的出现是为了降低耦合性,所谓耦合就是类之间依赖关系,所谓降低耦合就是降低类和类之间依赖关系。可能有的人说自己之前并没有

2016-08-10 10:32:32 12353 10

原创 FFmpeg移植Android编译生成单个库

该文档主要是介绍将FFmpeg音视频编解码库移植到Android中的编译生成单个库的过程环境准备Ubuntu14.04 android-ndk-r9d-linux-x86_64.tar.bz2第一步:下载FFmpeg源码到FFmpeg官网下载FFmpeg源码,该文档编译的源码版本是FFmpeg3.0.2第二步:在Linux环境下编译FFmpeg通过虚拟机安装ubuntu14.04,该文档采用的方式

2016-08-05 16:23:37 1545

原创 FFmpeg移植Android编译生成多库

该文档主要是介绍将FFmpeg音视频编解码库移植到Android中的编译过程环境准备Ubuntu14.04 android-ndk-r9d-linux-x86_64.tar.bz2第一步:下载FFmpeg源码到FFmpeg官网下载FFmpeg源码,该文档编译的源码版本是FFmpeg3.0.2第二步:在Linux环境下编译FFmpeg通过虚拟机安装ubuntu14.04,该文档采用的方式就是该方式,

2016-08-05 16:20:08 699

原创 Android性能优化

Android视图的绘制流程Android中视图的绘制会经历三个阶段即onMeasure()、onLayout()和onDraw()一、OnMeasure()Measure是测量的意思,测量视图的大小。Viewd的绘制流程会从ViewRoot的performTraversals()方法中开始,在其内部调用View的measure()方法。measure()方法接收两个参数@Overrideprot

2016-08-05 16:06:06 1081

原创 学习资料整理

以下是自己闲来没事闲逛时收集的一些学习网站,现在整理一下,之前收集的好多好的网站都丢了,所以现在整理整理,留着以后也许会有用的

2016-03-15 13:50:59 1641 3

原创 Android 特殊的单例Toast(防止重复显示)

1、介绍所谓单例Toast就是每次显示的时候不会重复创建,节约资源。网上有很多这样的单例Toast,但是本篇介绍的是特殊的单例Toast,根据显示事件的长短来显示内容。正常的Toast显示的时候会出现这样的情况,当我们点击一个按钮弹出Toast的时候,当Toast显示没有结束的时候再次点击,后台就会又创建一个并且等待之前的显示完成后才会显示,如果我们疯狂的点击按钮,那就会产生多个Toast对象

2016-02-03 16:06:54 11030 5

原创 Android HTTPS认证之Volley封装

1、概述Goolge IO 2013推出了Volley框架,在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,Google I/O 2013上,Volley发布了。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。 这

2016-01-24 20:29:23 3012

原创 Android HTTPS认证

1、概述因为最近公司的项目需求涉及到HTTPS双向认证和服务器进行交互,所以最近花了大量时间研究相关知识,发现网上并没有完善的相关文章,自己在这个过程中也走了好多弯路,所以决定写篇文章记录自己学到的东西,同时也希望能够帮到需要的人。2、HTTPS相关介绍HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer

2016-01-18 23:39:17 3733

powerdesigner1029.zip

powerdesigner1029.zip

2020-08-12

xunjieliuchengtu.rar

迅捷画图

2020-08-12

空空如也

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

TA关注的人

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