![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java开发
文章平均质量分 74
cding1818
这个作者很懒,什么都没留下…
展开
-
JavaPoet动态生成代码
JavaPoet - 优雅地生成代码一项目简介二项目总览1 大体结构图2 关键类说明三相关使用1 API使用2 一个简单示例四源码浅析五使用场景1 根据编译时注解生成代码11 前言12 一个简单示例2 根据协议文件生成对应代码3 更多待扩展六知识储备1 注解处理器Annotation Processor11 自定义注解处理器1转载 2017-08-22 11:36:20 · 1599 阅读 · 0 评论 -
android的中的触感反馈
HapticFeedBack翻译成中文就是触感反馈的意思。可以通过 [设置]->[声音]->[触感反馈]选项开启所有view的触感反馈选项。在android java代码中可以通过performHapticFeedBack方法来执行触感反馈的效果和声音效果tv.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,原创 2015-08-29 14:54:33 · 1850 阅读 · 0 评论 -
Long CLick 和Long Press区别
关于longClick和longPress的区别就在于,如果ACTION_DOWN触发后没有ACTION_UP直到timeout那么就是longclick事件,不管你是否有拖动;而longPress则是必须在ACTION_DOWN后不能移动直至ACTION_UP。原创 2015-08-29 16:51:07 · 5792 阅读 · 0 评论 -
Android 的manifest解析
AndroidManifest.xml采用xml文件格式描述,使用xml标签的形式描述每个属性,AndroidManifest.xml的解析也遵循xml解析的规律,对AndroidManifest.xml的解析主要用到PackageManager,PackageInfo,ApplicationInfo三个类,PackageInfo描述了应用级的信息,包括应用的版本号,版本名称,对应AndroidM转载 2015-07-31 11:40:03 · 2342 阅读 · 0 评论 -
Android Drawable
本节引言:小猪好像写了好几个专题,都没坚持写完,又忍不住开个新的专题了,因为最近打算开始研究Android图形与图形图像处理,动画以及自定义View等,所以就顺道记录下,最近事有点多,感觉情绪很低迷,心理压抑又找不到倾述的对象,这个时候程序猿肯定会说:"没对象,你自己new一个啊",好有道理,我竟无言以对...好吧!还是自己的那句座右铭:没什么可以一蹴而就,转载 2015-06-30 10:05:32 · 2733 阅读 · 0 评论 -
java线程
一. 线程的概念Java 虚拟机允许应用程序并发地运行多个线程。每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以标记或不标记为一个守护程序。当某个线程中运行的代码创建一个新 Thread 对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护程序。Java 虚拟机启动时,通常都会有单个非守护线程(它通常会调用某原创 2015-06-26 09:55:10 · 1028 阅读 · 0 评论 -
Android View中getViewTreeObserver().addOnGlobalLayoutListener()
我们知道在oncreate中View.getWidth和View.getHeight无法获得一个view的高度和宽度,这是因为View组件布局要在onResume回调后完成。所以现在需要使用getViewTreeObserver().addOnGlobalLayoutListener()来获得宽度或者高度。这是获得一个view的宽度和高度的方法之一。OnGlobalLayoutListener 是原创 2015-06-18 10:18:34 · 54087 阅读 · 5 评论 -
Android开源项目PagerSlidingTabStrip
PagerSlidingTabStrip是github上的开源软件,官网地址:https://github.com/astuetz/PagerSlidingTabStrip。 PagerSlidingTabStrip是一行tab栏,与Viewpaper完美结合实现多页内容展示效果。官网的介绍如下:在sample/文件夹下有一个现成的可运行工程转载 2015-06-17 22:49:27 · 4079 阅读 · 1 评论 -
Android 判断用户2G/3G/4G移动数据网络
在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需要根据用户当前网络情况来做一些调整的,也可以在 App 的设置模块里,让用户自己选择,在 2G / 3G / 4G 网络条件下,是否允许请求一些流量比较大的数据。通过 Android 提供的 TelephonyManager 和 ConnectivityManager 都可以获取到 Net转载 2015-04-17 14:40:10 · 2988 阅读 · 0 评论 -
android IPC通信中的UID和PID识别
IPCThreadState对象维护了2个变量 pid_t mCallingPid; uid_t mCallingUid; 从变量名称来看,这2个变量保存了进程的PID和UID,并且由于这两个变量由IPCThreadState对象维护,可见它们是与IPC相关的。具体它们转载 2015-04-10 15:31:36 · 878 阅读 · 0 评论 -
Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。类型:创建类模式类图:工厂方法模式代码[java] view plaincopyinterface IProduct { public void productMethod(); } cl转载 2014-05-12 15:46:52 · 916 阅读 · 0 评论 -
Java设计模式---原型模式
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clo转载 2014-05-12 16:17:10 · 712 阅读 · 0 评论 -
java设计模式-----单例模式
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:创建类模式类图:类图知识点:1.类图分为三部分,依次是类名、属性、方法2.以>结尾的为注释信息3.修饰符+代表public,-代表private,#代表protected,什么都没有代表包可见。4.带下划线的属性或方法代表是静态的。5.对类图中对象的关转载 2014-05-12 15:23:12 · 736 阅读 · 0 评论 -
Java设计模式---建造者模式Builder Pattern
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象转载 2014-05-12 16:07:26 · 745 阅读 · 0 评论 -
深入java虚拟机---Java内存区域与内存溢出
内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。下面详细阐述各数据区所存储的数据类型。 程序计数器(Program Counter Register)转载 2015-03-16 09:39:36 · 753 阅读 · 0 评论 -
XML解析各种方式比较
前面介绍了四种创建、解析XML的方式:0、 Android 创建与解析XML(一)—— 概述1、 Android 创建与解析XML(二)—— Dom方式2、 Android 创建与解析XML(三)—— Sax方式3、 Android 创建与解析XML(四)—— Pull方式4、 Android 创建与解析XML(五)—— Dom4j方式其中,从处理转载 2015-03-19 20:38:08 · 914 阅读 · 0 评论 -
XML解析SAX
1. Sax概述SAX是一种占用内存少且解析速度快的解析器,它采用的是事件启动,不需要解析完整个文档,而是按照内容顺序看文档某个部分是否符合xml语法,如果符合就触发相应的事件,所谓的事件就是些回调方法(callback),这些方法 定义在ContentHandler中,下面是其主要方法:startDocument():当遇到文档的时候就触发这个事件 调用这个方法 可以在其中做转载 2015-03-19 20:19:21 · 485 阅读 · 0 评论 -
URLConnection和HTTPClient的比较
A Comparison of java.net.URLConnection and HTTPClientSince java.net.URLConnection and HTTPClient have overlappingfunctionalities, the question arises of why would you use HTTPClient.Here are a few转载 2015-08-05 10:28:24 · 758 阅读 · 0 评论 -
java中的注解
要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。元注解: 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解: 1.@Target,转载 2015-09-01 17:05:26 · 673 阅读 · 0 评论 -
Android应用中使用运行时注解
其实非常简单,直接上代码:本文主要是替代传统的findViewById()的功能,就是在我们Activity中不需要再使用findViewById()去给View赋值了,通过注解在运行阶段自动赋值。以及setOnClickListener()也是一样的原理。使用注解和反射技术。1. 定义自己的annotation注解。 定义findViewbyId这个功能的注解pa原创 2016-04-22 11:36:38 · 2115 阅读 · 0 评论 -
java中Executor、ExecutorService、ThreadPoolExecutor介绍
源码非常简单,只有一个execute(Runnable command)回调接口 public interface Executor { /** * Executes the given command at some time in the future. The command * may execute in a new thread, in原创 2013-12-04 18:12:20 · 117530 阅读 · 8 评论 -
Java的Runnable、Callable、Future、FutureTask。
Java中存在Runnable、Callable、Future、FutureTask这几个与线程相关的类或者接口,在Java中也是比较重要的几个概念,我们通过下面的简单示例来了解一下它们的作用于区别。Runnable其中Runnable应该是我们最熟悉的接口,它只有一个run()函数,用于将耗时操作写在其中,该函数没有返回值。然后使用某个线程去执行该runnable即可实现多线程,Th转载 2017-07-13 10:32:53 · 676 阅读 · 0 评论 -
混淆中泛型问题
/ExceptionManager: ExceptionManager java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType原创 2016-12-21 10:29:47 · 3599 阅读 · 0 评论 -
反射、注解与依赖注入总结
现在在我们构建自己或公司的项目中,或多或少都会依赖几个流行比较屌的第三方库,比如:Butter Knife、Retrofit、Dagger 2等,如果你没用过,那你需要找时间补一下啦;有时在使用后我们会好奇他们到底是怎么做到这种简洁、高效、松耦合等诸多优点的,当然这里我不探讨它们具体怎么实现的,而关心的是它们都用到同样的技术反射和注解,并实现的依赖注入。如果你好奇这些库具体是怎么实现的,或转载 2016-04-21 19:34:23 · 2239 阅读 · 0 评论 -
控制反转与依赖注入(IOC和DI)
1.控制反转(Inversion of Control)与依赖注入(Dependency Injection)控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。IoC是一个很大的概念,可以用不同的方式来实现。转载 2016-04-21 20:15:06 · 1983 阅读 · 0 评论 -
Java序列化
Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。 Eclipse中The serializable class XXXXXX d原创 2014-05-07 11:05:09 · 6483 阅读 · 3 评论 -
Java中的反射基础知识
1. 了解 Java 中的反射1.1 什么是 Java 的反射Java 反射是可以让我们在运行时获取类的函数、属性、父类、接口等 Class 内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用 get/set 方法获取变量的值,即使方法或属性是私有的的也可以通过反射的形式调用,这种“看透 class”的能力被称为内省,这种能力在框架开发中尤为重要。 有些情况转载 2016-03-28 22:00:33 · 1736 阅读 · 0 评论 -
Android 命名规范 (提高代码可以读性)
先初略介绍下当前主要的标识符命名法和英文缩写规则:(这段别人那边借鉴的)在讲解命名规范前,先初略介绍下当前主要的标识符命名法和英文缩写规则。标识符命名法标识符命名法最要有四种:1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。2 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写3转载 2015-12-18 21:15:10 · 806 阅读 · 0 评论 -
android 通知条效果
1.0 官方在 android 在5.0中加入个通知新样式 Heads-Up.google 介绍界面,需要翻墙在 Android 5.0的使用的方法的代码: notification=new NotificationCompat.Builder(MainActivity.this) .setVisibility(Notifica转载 2015-10-26 19:03:26 · 5537 阅读 · 4 评论 -
JVM 连接阶段
类被加载后,就进入连接阶段。 连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去。 连接阶段三个步骤:验证、准备和解析。 类的验证 类的验证内容: 1.类文件的结构检查 确保类文件遵从Java类文件的固定格式。 2.语义检查 确保类本身符合Java语言的语法规定,比如验证f转载 2015-09-16 10:05:42 · 1579 阅读 · 0 评论 -
Android通过注解初始化绑定View
一、引言Android中通过findViewById在布局文件中找到需要的View,加入一个Activity里面有许多的View需要初始化,那将是一件很繁琐的事情。当然Google一下你会发现有很多Android Annotations框架。比如比较有名的“Android Annotations”,这样的框架很复杂,用起来也比较麻烦,还有一些BUG,第一次使用也花费了不少时间研究。也许原创 2015-08-28 15:33:26 · 1800 阅读 · 1 评论 -
JVM类的加载概述
Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。 加载.class文件的方式: 1.从本地系统中直接加载 2.通过网络下载.class文件转载 2015-09-16 09:58:20 · 520 阅读 · 0 评论 -
Java虚拟机与程勋的生命周期
Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序。 当启动一个Java程序时,一个虚拟机实例诞生;当程序关闭退出,这个虚拟机实例也就随之消亡。 如果在同一台计算机上同时运行多个Java程序,将得到多个Java虚拟机实例,每个Java程序都运行于它自己的Java虚拟机实例中。 在如下几种情况下,Java虚拟转载 2015-09-14 10:01:28 · 1056 阅读 · 0 评论 -
Java的 CopyOnWriteArrayList
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。转载 2015-09-28 15:18:59 · 649 阅读 · 0 评论 -
XML解析 Dom4j
1、Dom4j概述dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.转载 2015-03-19 20:38:00 · 689 阅读 · 0 评论 -
XML解析PULL
1、Pull概述Android系统中和创建XML相关的包为org.xmlpull.v1,在这个包中不仅提供了用于创建XML的 XmlSerializer,还提供了用来解析XML的Pull方式解析器 XmlPullParserXmlSerializer没有像XmlPullParser那样提取XML事件,而是把它们推出到数据流OutputStream或Writer中。XmlSe转载 2015-03-19 20:30:42 · 615 阅读 · 0 评论 -
Java线程(七):Callable和Future
接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行转载 2015-02-03 20:12:28 · 516 阅读 · 0 评论 -
Java线程(四):线程中断、线程让步、线程睡眠、线程合并
最近在Review线程专栏,修改了诸多之前描述不够严谨的地方,凡是带有Review标记的文章都是修改过了。本篇文章是插进来的,因为原来没有写,现在来看传统线程描述的不太完整,所以就补上了。理解了线程同步和线程通信之后,再来看本文的知识点就会简单的多了,本文是做为传统线程知识点的一个补充。有人会问:JDK5之后有了更完善的处理多线程问题的类(并发包),我们还需要去了解传统线程吗?答:需要。在实际开发转载 2015-02-03 19:51:19 · 543 阅读 · 0 评论 -
java的Object类
Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。 Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。 Object类是Java中唯一没有父类的类。 其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。 Object类中转载 2015-01-27 09:42:46 · 555 阅读 · 0 评论 -
String、StringBuffer与StringBuilder之间区别
最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringBuilder的东西,现在整理一下。关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下 1.三者在执行速度方面的比较:StringBuilder > StringBuffer > String转载 2015-01-26 17:02:07 · 510 阅读 · 0 评论