自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (8)
  • 收藏
  • 关注

原创 Android 5.0使用android:onClick属性出现崩溃的原因及解决方案

问题及表现在项目中,对Button设置点击事件监听时,大多数情况下还是习惯使用setOnClickListener设置监听,但是最近发现当在布局文件中同时使用了android:theme和android:onClick属性时,在响应点击事件时程序会发生crash,发生Crash的设备为Android 5.0及以上(7.0未测试),不限机型。在Android 5.0和Android 6.0上发生cra

2016-11-14 15:08:49 7138

原创 Google支付(In-app Billing)接入

该文档基于第3版。应用内结算简介一、概述使用应用内结算(In-app Billing)时,我们的应用通过相应的API来访问In-app Billing服务。应用不直接与Google Play服务器通信,而是通过进程间通信(IPC)向Google Play发送结算请求并接收Google Play返回的响应。In-app Billing在使用之前需要注意以下几点:只能用来销售数字内容,不能销售实体商品

2015-12-16 20:44:56 31394 5

原创 检测设备是否支持Google Play服务

在使用Google Play服务之前,需要判断当前当前的设备是否支持Google Play服务,Google官方提供了两种方法来进行判断一、使用GoogleAPiClient类访问Google Play服务功能(被建议使用)在使用Google Play服务的地方实现 GoogleApiClient.OnConnectionFailedListener,实现回调方法onConnectionFailed

2015-12-08 19:24:29 16906

原创 A.equals(B)的坑

在进行字符串比较的时候,一般使用A.equals(B)来判断。但如果此时A为null,则在程序运行的时候,会发生空指针错误。比较保险的方法,使用Objects.equals(A,B)来进行判断,防止由于A为null导致的程序崩溃问题。

2015-12-03 00:11:33 2105 1

原创 String,StringBuffer,StringBuilder效率与内存占用比较

分别使用String,StringBuffer,StringBuilder进行10000次的字符串拼接操作,计算运行时间以及java程序运行时的内存占用。public class StringWasteMemoryTest { public static void main(String[] args) { long beforeTime = System.currentTi

2015-11-22 21:07:58 5807

原创 Android平台接入Facebook登录

官方教程地址: https://developers.facebook.com/docs/android/getting-started开发环境为Android Studio,官方要求SDK最低版本为“API 15: Android 4.0.3”。一、创建应用1、激活账号按照要求创建APP,生成appId。注意:在填写APP名称的时候,不能包含任何有关facebook的名字或简写,否则无法通过。2

2015-11-13 17:21:43 27878 14

原创 android:configuration 处理屏幕旋转和语言切换等问题

当APP设置为屏幕可旋转的时候,会发现在旋转屏幕的过程中,用户在EditText等控件中输入的内容会随之消失,这种情况同样发生在切换系统语言的时候。打印APP的生命周期,当进行屏幕方向转换的时候,生命周期如图:屏幕方向的转换,引起了Activity的重建,重新执行了onCreate( )方法。 由于数据没有保存,在Activity重建之后,数据丢失。解决方法:一、防止Activity重建在Andr

2015-11-12 16:22:31 6410 1

原创 官方推荐:精简google-play-services.jar的方法(解决65536问题的应急方案)

之前写过关于精简google_play_services.jar的方法,是参考自github的,详见: http://blog.csdn.net/liuweiballack/article/details/49335529从google-play-services 6.5开始,Google官方提供了按照功能打包API的方法,其步骤如下(以添加google+登录为例):1、在工程的build.gra

2015-11-11 20:40:35 22529 10

原创 No resource found that matches the given name after upgrading to AppCompat v23

在SDKmanger中更新了extra为最新版之后,通过android studio创建新的项目,会出现错误信息:D:\AndroidStudioProjects\DemoTest\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.1.0\res\values-v23\values-v23.xmlErr

2015-10-29 16:28:00 833

原创 精简google-play-services.jar的方法(解决65536问题的应急方案)

因为项目功能的需求,需要引入较多的第三方的jar包,但在打包过程中,发生如下错误:Conversion to Dalvik format failed:Unable to execute dex: method ID not in [0, 0xffff]: 65536应用中的方法数超过了最大限制,这是因为单个DEX文件可被引用的方法总数(自己开发的代码以及所引用的Android框架、类库的代码)被限

2015-10-22 16:41:45 9619 5

转载 serialVersionUID作用

serialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastExc

2015-10-07 23:57:50 552

原创 使用字节流复制文件的四种方式以及效率比较

在java.io包中操作文件内容的主要有两大类:字节流、字符流。在对音乐和视频等文件进行IO操作时,都是使用字节流。 使用字节流操作时文件,有四种方式,现对一个flac文件分别使用四种方式进行复制,测试其效率。测试类:public static void main(String[] args) throws IOException { long startTime = System.cur

2015-10-05 21:07:09 8420 3

原创 Google反编译新工具——Enjarify

Enjarify是Google最近出的一款反编译工具,它可以将Dalvik字节码转换成相对应的Java字节码。Enjarify使用起来相当方便,虽然没有可视化的图形界面,但是Enjarify的命令却十分简单。Enjarify是一个基于Python3的程序,所以在使用Enjarify之前,需要预装Python3的解释器,官方推荐pypy3。在Windows下使用时,Enjarify提供了一个批处理文件

2015-09-09 20:36:51 11525 3

原创 Java异常问题小结

一、异常的分类在Java中,所有的异常都继承自Throwable,Throwable派生出来的子类有两种:Exception和Error。Error(错误):程序无法处理的错误。大部分是编写的Java代码无关,是Java虚拟机层面出现的问题,比如运行时Java虚拟机内存不足。出现Error时,Java虚拟机只能尽可能友好的终止当前进程。Exception(异常):程序可以处理的异常。Exceptio

2015-09-09 11:08:16 823

原创 Java遍历Map的常用方法

1、只取valueCollection<String> values = map.values();for (String value : values) { System.out.print(value + " ");}2、先去key,通过key取valueSet<String> keys = map.keySet();for (String key : keys) { Sy

2015-09-01 11:11:58 508

原创 TreeSet学习小结

JDK对TreeSet介绍如下:基于 TreeMap 的 NavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。 TreeSet的特点是可以对元素按照某种规则进行排序,并且保证元素的唯一性。 排序的方式有两种: A:自然排序 B:比较器排序例如:public class TreeSetDem

2015-08-30 17:18:34 712

原创 ConcurrentModificationException的解决方法

ConcurrentModificationException是Java中很常见的一种异常,尤其是使用集合类的时候,很容易出现。在官方文档中ConcurrentModificationException的介绍如下:public class ConcurrentModificationException extends RuntimeException当方法检测到对象的并发修改,但不允许这种修改时,

2015-08-30 12:23:51 1997

原创 Activity的四种launchMode以及onNewIntent()的调用时机

Android的Activity一共有四种launchMode:standard、singleTop、singleTask、singleInstance,在AndroidManifest.xml中用来指定Activity的启动方式。一、standardactivity的默认启动方式,未指定android:launchMode的属性时默认为standard。public class MainActiv

2015-08-27 20:17:25 2637

原创 Android中Notification捕捉点击事件的替代方式

在处理程序中的通知消息时,一般都是用Notification类来处理,通过设置PendingIntent来处理点击通知之后的动作。与一般的Intent不同,PendingIntent表示即将要执行的动作,是在用户点击消息之后才进行处理,它里面保存了一个Intent用来执行跳转的操作。但是有一些需求,要求在用户点击通知之后,还需要执行一些其他的操作,并非单纯的进行activity之间的跳转。因此需要对

2015-08-26 20:08:43 34866 9

原创 android:includeFontPadding的使用:清除TextView字体周边空白

在设置界面布局的时候,设计师会给一张标注了尺寸的UI设计图,如果在UI中包含了TextView空间的话,会发现即使完全按照标注的尺寸来做,最终的显示效果和设计图还是有差异。打开开发者模式中的布局边界,再观察APP的界面可以发现,在TextView中字体与TextView的边界是有一定的距离的,在720px的图中大概有2px的边界留白。就是这些默认的留白导致UI出现偏差。在TextView提供的属性设

2015-08-24 23:50:37 37484 5

原创 String和Date之间的转换(Java)

String和Date之间的互相转化是最常用的。具体方法如下:1、Date—>StringDate date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString = sdf.format(date);2、String—>DateString str =

2015-08-16 19:23:13 523

原创 Java中的编译时多态和运行时多态

编译时多态:主要是方法的重载,通过参数列表的不同来区分不同的方法。运行时多态:也叫作动态绑定,一般是指在执行期间(非编译期间)判断引用对象的实际类型,根据实际类型判断并调用相应的属性和方法。主要用于继承父类和实现接口时,父类引用指向子类对象。 例如:public class PolymorphismTest { public static void main(String[] args)

2015-08-13 22:51:42 4622

原创 一道关于Java中Integer缓冲区的面试题

给出下列程序的执行结果:Integer integer1 = 128;Integer integer2 = 128;System.out.println(integer1 == integer2);System.out.println(integer1.equals(integer2));System.out.println("-----------");Integer integer3 =

2015-08-13 16:42:19 1095

原创 Java中String问题汇总

1、String s = new String(“hello”) 和 String s = “hello”的区别?字符串作为一个常量是存放在常量池里面的,新建字符串的时候会先从缓冲区里面找有没有这个字符串,如果有直接返回引用,没有的话就在里面创建一个。 String s = “hello”可能创建一个对象或者不创建对象,主要看“hello”在常量池中是否存在。 String s = new St

2015-08-13 15:36:28 1007

原创 Java内部类以及匿名内部类学习总结

一、什么叫内部类把类定义在其他类的内部,这个类就被称为内部类。 内部类只是一个编译时的概念,一旦编译成功之后,外部类和内部类就会变成两个不同的类,分别是Outer.class和Outer&Inner.class。所以内部类的成员变量/方法名可以和外部类的相同。二、内部类访问特点内部类访问外部类:可以直接访问,包括内部类的私有;外部类访问内部类:通过创建对象访问(非静态),通过类名访问(静态)。

2015-08-07 10:05:35 550

原创 Android重启当前Activity以及Activity生命周期的变化

重启Activity的方法private void reStartActivity() { Intent intent = getIntent(); finish(); startActivity(intent);}注意 finish()和startActivity(intent)的顺序不能错误。Activity生命周期变化启动APP:程序刚启动时,会按照顺序依次执行:on

2015-08-06 11:34:41 14072 1

原创 Java接口学习总结

一、接口的特点1、接口不可以实例化,创建对象时利用多态的方式创建。Animal animal = new Dog();//Animal是接口,Dog必须是实现了接口Animal的类。2、接口的子类可以是抽象类,也可以是具体类(必须实现该接口,重写该接口中的所有方法)。二、接口成员的特点成员变量:接口的成员变量只能是常量,而且是静态的,默认修饰符为 public static final,并且只能是

2015-08-04 23:38:33 786

原创 Java抽象类总结

抽象类特点抽象类和抽象方法必须用abstract关键字修饰; 抽象类中不一定有抽象方法,但是有抽象方法的类必须定义为抽象类;抽象类中成员变量可以是常量,也可以是变量;抽象类有构造方法,但它不能被实例化,抽象类的构造方法用于子类访问父类数据;抽象类的实例化依靠子类实现;抽象类中的抽象方法不能有主体。public class AbstractClassTest { public s

2015-07-31 00:23:23 932

原创 Java多态学习总结

一、多态产生的条件存在继承关系;存在方法重写; 要有父类引用指向子类对象。示例代码:public class PolymorphismTest { public static void main(String[] args) { SuperClass clazz = new SubClass(); //满足父类引用指向子类对象条件 }}class Super

2015-07-29 00:17:03 1255

原创 Android生命周期在不同版本中的表现形式

Android的生命周期在不同版本的SDK中可能表现出不一样的形式,现在用Android4.4和Android2.3做两个对比。启动APP(左图为4.4,右图为2.3): 退出APP: 运行时点击HOME键: 点击HOME之后重新回到APP: APP运行时锁屏: 从锁屏回到APP: 重点在锁屏时,2.3和4.4表现出来不同的生命周期。这两点需要特别注意,如果需要程

2015-07-23 18:07:14 616 1

原创 Java中用final修饰的变量

在Java中,用final修饰的变量只能赋值一次,之后不能再被重新赋值,而且被修饰的变量变成了常量。public class Test { public static void main(String[] args) { int a = 1; int b = 2; int c = 1 + 2; int d = a + b;

2015-07-22 20:23:58 1750

原创 Java继承学习小结

一、继承中构造方法的关系public class ConstructionMethodTest { public static void main(String[] args) { SubClass subClass = new SubClass(); System.out.println("-----------"); SubClass su

2015-07-22 11:51:55 579

原创 Java中的代码块

在Java中,一共存在4种代码块。1、普通代码块(局部代码块)出现在方法中,用于限定变量的生命周期。2、构造代码块在类中定于,位于类的成员位置,用{ }括起来。在调用构造方法前执行。 可以把多个构造方法中的共同代码放到构造代码块中,对对象进行初始化。3、静态代码块在类中定于,位于类的成员位置,用{ }括起来,用static修饰。一般用来对类进行初始化。 静态代码块优于构造方法执行。在类加载时执行

2015-07-19 21:57:42 551

原创 Java中static关键字总结

一、static的特点 static可以修饰成员变量,可以修饰成员方法还可以修饰代码块。 特点如下:随着类的加载而加载;优先于对象存在;被类的所有对象共享;可以通过类名调用(限于修饰成员变量和成员方法时)。二、static修饰的内容在内存中的位置 静态的内容在方法区的静态区。三、注意事项静态方法中没有this关键字: 静态内容随着类加载而加载,this是随着对象创建而存在,静态

2015-07-19 13:48:17 643

原创 Java构造方法注意事项

在Java中,如果程序中没有显示的给出构造方法,系统会自动提供一个无参的构造方法。 但是,如果程序中给出构造方法,不论给出的构造方法是否带有参数,系统都不在提供无参的构造方法。class Person { String name; int age; public Person(String name, int age) { this.name = name;

2015-07-16 00:35:32 1299

原创 Java中的参数传递问题

在程序设计语言中,参数传递方法一般有两种 **按值调用(call by value):方法接收的是调用者提供的值。 按引用调用(call by value):方法接收的是调用者提供的地址。**很多人认为,在Java中也存在两种参数传递的方法: 对于基本数据类型,Java中采用的是值传递;对于对象,Java中采用的是引用传递。先看一段代码:int a = 0;int b = 1;swap(a

2015-07-13 20:54:30 526

原创 Java中交换两个int类型变量的方法汇总

Method One:使用第三方变量int z = x;x = y;y = z;Method Two:变量相加减x = x + y;y = x - y;x = x - y;Method Three:用位异或实现x = x ^ y;y = x ^ y;x = x ^ y;Method Four:最简单的一句话搞定y = (x+y) - (x=y);

2015-07-10 01:19:53 1338

原创 Java中的扩展运算符盲区

首先看一段代码:public static void main(String[] args) { byte num = 1; num = num + 1; num += 1; System.out.println(num);}我们一般都认为 num = num + 1 和 num += 1 这两条语句是等价的,后者是前者的简写。 对于加法操作, num + 1 的

2015-07-09 20:31:49 1375

原创 Java字符参与运算和字符串参与运算

字符参与运算 字符参与运算,实际上是字符对应的ASCII码进行运算。字符串参与运算 字符串运算实际就是字符串的连接操作,但要严格注意运算顺序。public static void main(String[] args) { System.out.println('0'); System.out.println('0' + 1); System.out.println(

2015-07-09 00:29:24 1481

原创 原码,、反码、补码的计算

在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。原码:原码就是符号位加上真值的绝对值,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。+3 = 00000011-3 = 10000011反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。+3 = 00000011-3 = 11111100补码:正数的补码与其原码相同

2015-07-08 00:40:22 4105

Facebook登录接入Demo

Facebook登录接入Demo

2015-11-13

jd-guiJar包查看器

jd-guiJar包查看器

2015-09-09

Pypy解释器

Pypy Python解释器

2015-09-09

Enjarify-master反编译工具

Enjarify-master反编译工具

2015-09-09

Android CountDownTimer 源码(4.4)

Android CountDownTimer 源码(4.4)

2015-06-23

Android CountDownTimer源码(5.0及以上)

Android CountDownTimer 源码(5.0及以上)

2015-06-23

CheckBoxDemo

请参考博客!

2015-06-12

编译原理答案 清华 张素琴版

这是网上较全的版本了,大部分题都有!答案正确

2012-06-06

空空如也

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

TA关注的人

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