自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (19)
  • 收藏
  • 关注

原创 Android的线程间通信Hanlder、Looper、Message、MessageQueue

一、先来一个总结性的语言,然后再细分析。(1)、当我们调用handler.sendMessage(msg)方法发送一个Message时,实际上这个Message是发送到与当前线程绑定的一个MessageQueue中,然后与当前线程绑定的Looper将会不断的从MessageQueue中取出新的Message,调用msg.target.dispathMessage(msg)方法将消息分发到与Me

2017-07-31 18:10:53 340

原创 android-Message解析

一、首先解析一下该类中的重点方法与字段1、private static final Object sPoolSync = new Object();//创建线程锁2、private static Message sPool;//Message实例对象,用于Message的重复利用率3、private static int sPoolSize = 0;//Message pool的数量4

2017-07-28 14:09:24 332

转载 Android中Parcelable接口用法

1. Parcelable接口Interface for classes whose instances can be written to and restored from a Parcel。 Classes implementing the Parcelable interface must also have a static field called CREATOR, which

2017-07-28 13:35:11 273

转载 屏幕适配

Android屏幕适配出现的原因在我们学习如何进行屏幕适配之前,我们需要先了解下为什么Android需要进行屏幕适配。由于Android系统的开放性,任何用户、开发者、OEM厂商、运营商都可以对Android进行定制,修改成他们想要的样子。但是这种“碎片化”到底到达什么程度呢?在2012年,OpenSignalMaps(以下简称OSM)发布了第一份Android

2017-07-27 22:23:47 619

转载 JAVA虚拟机、Dalvik虚拟机和ART虚拟机简要对比

1、什么是JVM?JVM本质上就是一个软件,是计算机硬件的一层软件抽象,在这之上才能够运行Java程序,JAVA在编译后会生成类似于汇编语言的JVM字节码,与C语言编译后产生的汇编语言不同的是,C编译成的汇编语言会直接在硬件上跑,但JAVA编译后生成的字节码是在JVM上跑,需要由JVM把字节码翻译成机器指令,才能使JAVA程序跑起来。JVM运行在操作系统上,屏蔽了底层实现的差异,从

2017-07-27 16:46:10 200

原创 ART和Dalvik虚拟器的区别

1、JVM虚拟机是边编译边运行。2、Dalvik使用的是Just-In-Time(JIT)机制,在边编译边运行的基础上,会分析应用程序的代码,识别出哪些方法为热方法,编译成对应的汇编代码放到缓冲中,这样下次就可以直接使用缓冲中的程序了。(.dex文件)需要通过这个编译器解释字节码后才可以在用户的设备上运行。3、ART使用的是Ahead-Of-Time(AOT)机制,及预编译运行。在应用安装

2017-07-27 16:05:02 279

转载 ViewStub的应用

在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。但是它的缺点就是,耗费资源。虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Infl

2017-07-27 15:21:10 243

转载 性能优化-SparseArray

昨天研究完横向二级菜单,发现其中使用了SparseArray去替换HashMap的使用.于是乎自己查了一些相关资料,自己同时对性能进行了一些测试。首先先说一下SparseArray的原理.  SparseArray(稀疏数组).他是Android内部特有的api,标准的jdk是没有这个类的.在Android内部用来替代HashMap这种形式,使用SparseArray更加节省内存空间的使用

2017-07-27 14:06:11 349

原创 性能优化-OnTrimMemory

一、简述OnTrimMemory是Andorid4.0以后推出的方法。先看看官方的介绍把。翻译过来就是:当系统检测到内存较低时就会调用该方法,这时候适合程序去释放一些没用的资源。举个例子:当程序在后台时,而内存不足以维持这么多后台进程时,这个程序就会返回level,它代表当前可用内存等级,这时你可以对比这个等级而对应的做一些事。再简单点就是:指导应用程序在内存不同的情况下进行自身内

2017-07-27 11:00:42 3218

转载 数据结构-树

阅读目录1. 二叉树2. 二叉查找树3. 平衡二叉树3.1 平衡查找树之AVL树3.2 平衡二叉树之红黑树4. B树5. B+树6. B*树7. Trie树  数据结构中有很多树的结构,其中包括二叉树、二叉搜索树、2-3树、红黑树等等。本文中对数据结构中常见的几种树的概念和用途进行了汇总,不求严格精准,但求简单易懂。回到顶部1

2017-07-25 13:43:45 317

转载 RxJava 详解

public void onNext(User user) { userView.setUser(user); } @Override public void onCompleted() { } @Override public void onError(Throwable

2017-07-21 10:13:30 248

转载 Retrofit2 源码解析

If the method is a method from Object then defer to normal invocation. if (method.getDeclaringClass() == Object.class) { return method.invoke(this, args); } if (platf

2017-07-21 10:11:38 453

转载 热修复技术

APP提早发出去的包,如果出现客户端的问题,实在是干着急,覆水难收。因此线上修复方案迫在眉睫。###概述基于Xposed中的思想,通过修改c层的Method实例描述,来实现更改与之对应的java方法的行为,从而达到修复的目的。###Xposed诞生于XDA论坛,类似一个应用平台,不同的是其提供诸多系统级的应用。可实现许多神奇的功能。Xposed需要以越狱为前提,像是

2017-07-21 10:10:44 210

转载 ANR

1、ANR排错一般有三种类型KeyDispatchTimeout(5 seconds) --主要是类型按键或触摸事件在特定时间内无响应BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成ServiceTimeout(20 secends) --小概率事件 Service在特定的时间内无法处理完成2、哪些操作会导致A

2017-07-21 10:10:03 414

转载 RecyclerView和ListView的异同

ViewHolder是用来保存视图引用的类,无论是ListView亦或是RecyclerView。只不过在ListView中,ViewHolder需要自己来定义,且这只是一种推荐的使用方式,不使用当然也可以,这不是必须的。只不过不使用ViewHolder的话,ListView每次getView的时候都会调用findViewById(int),这将导致ListView性能展示迟缓。而在Recycle

2017-07-21 10:08:39 267

转载 性能优化

合理管理内存###节制的使用Service 如果应用程序需要使用Service来执行后台任务的话,只有当任务正在执行的时候才应该让Service运行起来。当启动一个Service时,系统会倾向于将这个Service所依赖的进程进行保留,系统可以在LRUcache当中缓存的进程数量也会减少,导致切换程序的时候耗费更多性能。我们可以使用IntentService,当后台任务执行结束后会自动停止

2017-07-21 10:07:58 311

转载 Handler、Looper、Message、MessageQueue基础流程分析

##Looper(先分析这个是因为能够引出四者的关系) 在Looper中,维持一个Thread对象以及MessageQueue,通过Looper的构造函数我们可以知道: private Looper(boolean quitAllowed) { mQueue = new MessageQueue(quitAllowed);//传入的参数代表这个Queue是否能够被退出

2017-07-21 10:07:16 268

转载 内存泄漏

#Android 内存泄漏总结内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收。最近自己阅读了大量相关的文档资料,打算做个 总结 沉淀下来跟大家一起分享和学习,也给自己一个警示,以后 coding 时怎么避免这些情况,提高应用的体验和质量。

2017-07-21 10:06:12 239

原创 AsyncTask

首先从Android3.0开始,系统要求网络访问必须在子线程中进行,否则网络访问将会失败并抛出NetworkOnMainThreadException这个异常,这样做是为了避免主线程由于耗时操作所阻塞从而出现ANR现象。AsyncTask封装了线程池和Handler。AsyncTask有两个线程池:SerialExecutor和THREAD_POOL_EXECUTOR。前者是用于任务的排队,默认是

2017-07-20 17:47:17 318

转载 USB bulk设备中的CBW和CSW

网上关于USB的讲解很多,讲的好的大家可以参见《Linux那些事儿之我是USB》,非常具有趣味性。此处恕我才疏学浅只能记录一些皮毛。因为在做烧写工具,所以涉及到这部分的知识。在之前的经验教训中明白了一个道理:对待工作要严谨认真,对待知识不能浅尝辄止。        在学习一个新知识的时候,最难的就是有人能用最简单的文字描述它。而通常的概述也会因为太晦涩而难懂。当然也不可能有哪项技术能够用简

2017-07-19 15:47:04 1733

转载 Android USB Host U盘

Android USB Host使用详解之一:查看USB设备信息首先来看一下Google的官方文档中关于Android USB的介绍:Android USB Host and AccessoryAndroid USB有两种模式Host  Mode和Accessory Mode:在Host Mode下,Android手机作为主设备,如通过OTG线连接的HID设备或

2017-07-19 15:38:43 1228

原创 USB数据传输方式

主控制器负责主机和USB设备间数据流的传输。这些传输数据被当作连续的比特流。每个设备提供了一个或多个可以与客户程序通信的接口,每个接口由0个或多个管道组成,它们分别独立地在客户程序和设备的特定终端间传输数据。USBD为主机软件的现实需求建立了接口和管道,当提出配置请求时,主控制器根据主机软件提供的参数提供服务。USB支持四种基本的数据传输模式:控制传输,等时传输,中断传输及数据块传输。每种

2017-07-19 11:39:33 1347

原创 Android下的USB Host介绍和开发

Android下的USB Host介绍和开发1.USB Host介绍USB Host,中文意思是USB主模式,是相对于USB Accessory(USB副模式)来说的。如果Android工作在USB Host模式下,则连接到Android上的USB设备把Android类似的看作是一台PC机,PC机能干的事儿,Android也能干,例如将鼠标、键盘插入则可以使用键盘、鼠标来操作Andro

2017-07-19 11:22:13 805

转载 数据结构-链表(list)

谈到链表之前,先说一下线性表。线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表有两种存储方式,一种是顺序存储结构,另一种是链式存储结构。顺序存储结构就是两个相邻的元素在内存中也是相邻的。这种存储方式的优点是查询的时间复杂度为O(1),通过首地址和偏移量就可以直接访问到某元素,关

2017-07-18 09:56:38 343

原创 数组结构-栈和队列

1、栈栈只允许访问一个数据项:即最后插入的数据。溢出这个数据才能访问倒数第二个插入的数据项。它是一种"后进先出"的数据结构。栈最基本的操作是出栈(Pop)、入栈(Push),还有其他扩展操作,如查看栈顶元素,判断栈是否为空、是否已满,读取栈的大小等。

2017-07-17 18:09:31 363

原创 数据结构-数组

1、普通数组(无序数组)/** * 普通数组的Java代码 * @author xijie * */public class GeneralArray { private int[] a; private int size; //数组的大小 private int nElem; //数组中有多少项 public GeneralArray(int max){

2017-07-17 17:40:55 309

原创 java数据结构和算法的概述

一、概述数据结构:对计算机内存中的数据的一种安排。算法:对结构中的数据进行各种处理。二、应用方面:1、现实世界数据存储;2、程序员的工具;3、现实世界的建模。三、各数据结构优缺点数据结构类别 优点 缺点 链接 备注 无序数组 插入快,可以直接放到末尾O(1) 查找慢O(N)、删除慢O(N)、大小固定 点击打开链接...

2017-07-17 17:01:49 509

原创 windows下向GitHub上传代码

创建一个仓库点击第一个new repository 然后写你的仓库名称,这里我创建了一个helloworld的仓库,然后勾选上Initialize this repository with a README  然后create下载Git的命令行工具:http://windows.github.com/双击打开 克隆仓库复制这个网址,然

2017-07-14 17:04:35 496

转载 插入usb自动弹出app

在添加[html] view plain copyintent-filter>       action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />  intent-filter>  meta-data android:name="androi

2017-07-14 11:59:48 2506

转载 Android USB 设备 Applications、FrameWork、HAL层简单分析

MainActivity:[java] view plain copypackage com.example.administrator.usbmanagertest;    import android.content.Context;  import android.hardware.usb.UsbDevice;  imp

2017-07-13 16:14:21 2669

转载 Android Hal层简要分析

Android Hal层(即 Hardware Abstraction Layer)是Google开发的android系统里上层应用对底层硬件操作屏蔽的一个软件层次,说直白点,就是上层应用不必关心底层硬件具体是如何工作的,只需要调用底层提供的统一接口即可,这种设计思想广泛的存在于当前的软件的架构设计里。个人感觉,以前在Linux系统下学习驱动程序的开发时,当驱动程序完成时,我们会编写相应的用户

2017-07-13 15:17:54 352

原创 USB Class Codes

USB defines class code information that is used to identify a device’s functionality and to nominally load a device driver based on that functionality. The information is contained in three bytes with

2017-07-13 13:25:48 396

原创 android监听usb的插入与拔出

usb的插入与拔出的监听,系统已经为我们提供了接口。USB设备插入系统检测到ACTION_USB_DEVICE_ATTACHEDUSB设备拔出系统检测到ACTION_USB_DEVICE_DETACHED实现步骤如下(注意我这里使用的是动态注册广播接收者,你也可以改为静态注册):1、创建广播接收者:BroadcastReceiver mUsbReceiver = new Bro

2017-07-11 15:02:36 11484

原创 cp拷贝

1、命令: #cp 原目录 目标目录2、cp dir1 dir2,提示错误:略过目录,加个参数r就好了:cp -r dir1 dir2- r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。

2017-07-11 11:36:27 249

原创 查看每个应用程序最高可用内存

int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); Log.d("TAG", "Max memory is " + maxMemory + "KB");

2017-07-07 17:52:30 255

原创 Context区别

1、Activity和Service以及Application的Context是不一样的,Activity继承自ContextThemeWraper.其他的继承自ContextWrapper2、每一个Activity和Service以及Application的Context都是一个新的ContextImpl对象3、getApplication()用来获取Application实例的,但是这

2017-07-07 17:48:03 408

转载 初步使用EventBus

前言:EventBus是上周项目中用到的,网上的文章大都一样,或者过时,有用的没几篇,经过琢磨,请教他人,也终于弄清楚点眉目,记录下来分享给大家。相关文章:1、《EventBus使用详解(一)——初步使用EventBus》2、《EventBus使用详解(二)——EventBus使用进阶》一、概述EventBus是一款针对Android优化的发布/订阅事件总线。主

2017-07-07 17:34:19 210

转载 android 介绍Retrofit的简单使用

Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装。把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用retrofit来进行网络请求了,其主要作者是Android大神JakeWharton。导包:compile 'com.squareup.retrofit2:retrofit:2.0.0-beta

2017-07-07 17:21:31 202

原创 应用被强杀

如何判断应用被强杀在Application中定义一个static常量,赋值为-1,在欢迎界面改为0,如果被强杀,application重新初始化,在父类Activity判断该常量的值。应用被强杀如何解决如果在每一个Activity的onCreate里判断是否被强杀,冗余了,封装到Activity的父类中,如果被强杀,跳转回主界面,如果没有被强杀,执行Activity的初始化

2017-07-07 17:02:46 372

转载 Fragment生命周期

官网帮助文档链接: http://developer.Android.com/guide/components/fragments.html主要看两张图,和跑代码一,Fragment的生命周           二,与Activity生命周期的对比     场景演示 : 切换到该Fragment11-29 14:26:35.095: D/

2017-07-07 16:53:51 1005

andorid studio通过wifi链接设备的apk

andorid studio通过wifi链接设备的apk

2023-09-08

MyFFmpegDemo.zip

android版ffmpeg使用Demo,可以正常使用,以编译通过。

2020-04-02

GiraffePlayer2Demo.zip

GiraffePlayer2 用于rtmp流播放,只要写入播放流地址即可播放,在线观看直播及各种电视剧。

2020-03-31

android安卓版.zip

scratchJr_andorid_v1.2.4 与 Scratch_pad_v3.0.44 apk开发工具,推荐在平板上使用

2020-03-21

webRTC_m79版本AECDump分析所用unpack_aecdump文件

webRTC_m79版本AECDump分析所用unpack_aecdump文件,注意该文件需要在linux环境下运行。

2020-01-16

apache-maven-3.3.9

apache-maven-3.3.9,方便大家使用,谁使用谁下载啊。。。。。

2019-04-02

mybatis中mapper文件resultMap中collection和association的使用

mybatis中mapper文件resultMap中collection和association的使用,参考地址:https://blog.csdn.net/zhizhuodewo6/article/details/82863452

2018-09-27

springboot集成thymeleaf的Demo

springboot集成thymeleaf的Demo,参考文章:https://blog.csdn.net/zhizhuodewo6/article/details/82736118

2018-09-17

springboot集成redis集群,redis安装包配置

springboot集成redis集群,redis安装包配置,参考文章:https://blog.csdn.net/zhizhuodewo6/article/details/82316164

2018-09-02

springboot注解@PropertySource使用Demo

springboot注解@PropertySource使用Demo,配合文章地址https://blog.csdn.net/zhizhuodewo6/article/details/82021101

2018-08-24

springcloud-ribbon负载均衡demo

springcloud-ribbon负载均衡demo,请参考文章https://blog.csdn.net/zhizhuodewo6/article/details/81905865

2018-08-21

Springboot集成MyBatis自动生成代码工具源码

Srpingboot集成MyBatis自动生成代码工具源码,使用代码生成。

2018-08-20

springboot-mybatis-demo

springboot集成mybatis的demo,总共介绍了三种方法,参考https://mp.csdn.net/postedit/81777521文章一块使用

2018-08-17

GreenDao使用Demo

代码写的比较乱,敬请谅解,由于为了公司项目,边试验功能边写的,但是green的基本功能使用了,时配合Rxjava使用的。

2018-08-10

Rxjava、Rxandroid、RxBinding的Demo

Rxjava、Rxandroid、RxBinding的Demo,详细的代码,帮你快速开发

2018-04-28

RxJava2使用简介Demo

RxJava2 使用简介 android使用简介 完整代码 教你怎么使用

2017-12-27

android 相机框架,前后摄像头、展示控件自动适配。

android 相机框架,前后摄像头、展示控件自动适配。轻轻松松帮你完成摄像头开发,减少适配。

2017-12-22

usb_serial CH340(64位驱动) 串口转usb口

usb_serial CH340(64位驱动) 串口转usb口驱动 我试过,没有问题。注意使用usb2.0口,不要用usb3.0

2017-04-12

仿微信退出Dialog

仿微信退出,是我项目中用到的,希望对有需要的朋友有帮助.

2015-05-18

空空如也

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

TA关注的人

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