自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

geyingqiの博客

正在通往 steins gate 的道路当中.......

  • 博客(29)
  • 收藏
  • 关注

转载 Java基本排序算法

排序大的分类可以分为两种,内排序和外排序,在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,那么称之为外排序内排序分为一下几类- 插入排序: 直接插入排序,二分法插入排序,希尔排序- 选择排序:简单选择排序,堆排序。- 交换排序: 冒泡排序,快速排序 - 归并排序 - 基数排序插入排序 思想: 每步将一个待排序的记录,按照其顺

2015-12-29 17:29:19 438 1

转载 Activity之间传递Handler

在MyApp中定义属性handlerpackage jason.comimport jason.com.MasterActivity.MyHandler;import android.app.Application;public class MyApp extends Application{ //共享变量 private MyHandler handler = nu

2015-12-29 15:55:26 1051

原创 java.lang.IllegalStateException: Already connected

今天在调试程序bug的时候出现了这个异常,开始尝试做了很多事情都不奏效。比如connection.disconnect(),设置ConnectionTimeOut等等,于是上网上查了一下。目前造成这种异常的主要原因有两种(待补充)connection.setInput() 放在了connection.connect()的后面。在get请求中设置了connection.DoOutput().

2015-12-28 10:01:00 21257

翻译 避免死锁的三种方法

在某些情况下,避免死锁是很重要的,下面我就要描述一下避免死锁的三种方法定义锁顺序设置时限死锁检测定义锁的访问排序当多个线程同时需要一个锁,而获取这个锁的顺序不一样的时候,死锁就出现了。那么只要保证所有的锁都被同一种顺序获取的话,那么死锁就不会发生了.Thread 1: lock A lock BThread 2: wait for A lock C (when A l

2015-12-24 18:01:10 2954

转载 java 面试问题

多线程,并发1.java中能否创建volatile数组可以,但是只是一个指向数组的引用,而不是整个数组。也就是如果改变引用指向的数据,将会受到volatile的保护,但是如果多个线程同时改变数组内的元素,就不能起到保护作用2.volatile能使得一个非原子操作变成原子操作吗如果在类中有一个long类型的成员变量,如果了解这个成员变量会被多个线程访问,最好是将其设置为volatile,因为在jav

2015-12-21 13:11:21 1432

原创 swipe left for/swipe right for 中英文转换问题

即,当系统从英文转换为中文的时候,在锁屏下方的锁屏快捷方式点击的时候,swipe left for 还是保持英文的状态,因为没有log,所以直接看的源码在源码中搜索swipe left for 结果的确找到了一个类,但是想追溯他的源的时候的确是没有找到,后来是因为老师之前有解决过这个bug,所以直接就掠过了,原因是没有中文的xml配置文件,但是我在git cherrypick编译,然后拷到测试机里的

2015-12-18 21:12:21 1015

原创 HttpURLConnection 用法

HttpURLConnection最近在写android blog的客户端,由于需要与网页交互,所以用到了这个类,整理一下。创建方式:据我所知有两种 1.HttpURLConnection conn = new HttpURLConnection(URL url); 2.HttpURLConnection conn = (HttpURLConnection) myurl.openConnecti

2015-12-18 14:42:45 2386

转载 android 5.1+ Notification

user通过NotificationManager.notify发送通知请求,然后NotificationManger发送请求给NotificationManagerService,在这里对pendingIntent的信息进行提取以及过滤,然后将消息放进消息队列中去,enqueueNotificationInternal()方法负责将消息放入队列中,buzzBeepBlinkLocked()负责对消

2015-12-18 10:43:32 1166

原创 Notification KeyguardDone Pending

在某系列机上,插入耳机的时候会在锁屏界面弹出一个通知,但是这个通知并没有什么卵用,双击的效果也仅仅是解锁罢了,但是解锁之后直接就是launch界面,没有任何的Activity,这里就出现了一个bug,因为当解锁的时候发出的是KeyguardDonePending这个方法,这个方法会在一段时间后发出一个message,如果在这段时间之内没有remove掉这个message的话就会出现超时现象,这个re

2015-12-18 10:36:49 788 2

原创 File.listFiles() 结果返回为null

原因就是没有添加这两个权限,但是普通的话应该报错,不清楚为什么没有任何错误信息,直接返回null

2015-12-18 10:28:09 9278 2

原创 SystemClock.sleep

偶然在有关线程池的一篇博客中看见了这个方法,不理解与Thread.sleep()方法的区别是什么,于是做此笔记. SystemClock.sleep(millis) is a utility function very similar to Thread.sleep(millis), but it ignores InterruptedException. Use this function f

2015-12-18 10:10:53 920

原创 android6.0功能添加,QC3.0

QC 功能添加需求:当收到广播的时候,开始在n秒内监听某文件,如果当中的某个内容改变了,就弹出一个AlertDialog当收到系统通知的时候 需要在plugged的基础上进行UEvent的监听,但是,经过观察发现,UEvent并不能直接在SystemUI部分进行监听,其他设置监听的地方都是在framework/base/servers/下边的类进行监听。 通过进一步的阅读源码,发现BatteryS

2015-12-18 10:06:15 943

转载 java中的三个引用类 SoftReference, WeakReference 和 PhantomReference的区别

SoftReference、Weak Reference和PhantomRefrence分析和比较强引用除了上面提到的三个引用之外,还有一个其他的引用,也是最长用到的强引用, Object o=new Object(); Object o1=o; 上面代码第一句是在heap堆中创建新的Object对象,然后通过o引用这个对象,gc就不会收集该对象,如果通过如下代码 o=

2015-12-18 09:51:03 1021

原创 算法

实现一个可以得到最小值的栈这里首先要创建两个栈对象,其中一个正常进行栈的相关数据结构,第二个栈在push的时候需要与当前栈的栈顶元素进行比较,如果大于或者等于当前栈元素的话就重新push一个当前栈顶元素,这样可以保证第二个栈的栈顶元素是整个栈元素中最小的,即可求出最小值判断当前字符串与另一个字符串是否为旋转词假设有s1 = “1234” 那么他的旋转词为”2341”,”3421”,”4123”三种,

2015-12-18 09:02:17 498

原创 java aio

简介java AIO(NIO.2):异步非阻塞,服务器的实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理。适用场景AIO方式适用于链接数目比较多且比较长的架构(重操作)比如相册服务器,充分调用OS参与并发操作,编程比较复杂,jdk7开始支持详解所谓AIO 异步io,主要是针对线程在调用IO获取外部数据的时候,是否阻塞调用线程来说的,一般调用步骤大

2015-12-17 22:46:44 757

转载 java bio & nio

简介java bio: 同步并阻塞,基于bio的通信,Socket服务器端会发生阻塞.即在监听的过程中每次accept到一个客户端的连接,就处理这个请求,对于其他连接过来的客户端只能够阻塞等待java nio:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器中,多路复用器轮询到链接有I/O请求的时候才启动一个线程进行处理使用场景:bio方式适用于连接数目比较小

2015-12-17 22:10:58 384

原创 为android 6.0 添加电池充电动画

由于原生的android系统在充电的时候只有”闪电”图标,电池的电量是固定的,并不会一点一点的增加。所以便有了这个需求。 但是这个动画实现并不困难,只要在充电的时候,让电量随着时间的变化而增加就可以。 实现主要功能代码如下:private int changingAnim (BatteryTracker tracker){ int currentLevel = tracker.level

2015-12-17 10:23:10 4283 2

转载 ByteBuffer小结

ByteBuffer创建ByteBuffer.allocate(128) 创建一个容量为256字节的ByteBuffer,如果发现创建的缓冲区容量太小,那么只能重新创建。回绕ByteBuffer.flip() 这个方法用来将缓冲区转化成准备为数据传出的状态,执行以上方法后,输出通道会从数据的开头而不是末尾处开始,回绕保持缓冲区内的数据不变,只能够读取 清除缓冲区不会改变缓冲区的数据,只是重置了缓冲

2015-12-16 22:27:37 718

原创 Hotspot & Airplane mode

今天改了一个android6.0 的原生bug,bug本身十分简单,让人不明白为何google测试会没有发现这个bug,即当Airplane mode启动的时候,还可以通过StatusBar panel上的快捷方式来开启热点。在Setting中的开启热点很正常的被无效化了,但是快捷方式上仍然可以启动,这就出现了bug,首先StatusBar Panel 上的所有按键都继承了QSTile这个基类,只需

2015-12-16 21:57:27 438

原创 SystemUIDialog 小结

有时我们为android系统SystemUI部分添加功能的时候,需要弹出一个Dialog来通知用户,但是SystenUI中的大部分类虽然提供了Context,但是却没有绑定相应的Activity。一般的Toast可以正常创建,但是如果需要创建AlertDialog的话在最后AlertDialog.show()会报出 Unable to add window – token null is not f

2015-12-15 21:46:05 1481

转载 android app 延迟加载

android app 延迟加载的正确姿势: getWindow().getDecorView().post(new Runnable() { @Override public void run() { Handler.post(Runnable); } } 一般说到

2015-12-15 21:26:07 1454

转载 Fail-Fast机制

由于HashMap(ArrayList)并不是线程安全的,因此如果在使用迭代器的过程中有其他线程修改了map(这里的修改是指结构上的修改删除或者,并非指单纯修改集合内容的元素),那么将要抛ConcurrentModificationException 即为fail-fast策略 主要通过modCount域来实现,保证线程之间的可见性,modCount即为修改次数,对于HashMap(Arr

2015-12-15 21:09:33 476

转载 Android代码内存优化建议-Java官方篇

通常来说,高效的代码需要满足以下两个规则. 1. 不要做冗余的动作 2. 如果能避免尽量不要分配内存详细建议如下: 1.避免创建不必要的对象 虽然GC可以回收不用的对象,可是为这些对象分配内存,并回收他们同样是需要耗费资源的. 因此请尽量避免创建不必要的对象 (1)如果你需要返回一个String对象,并且你知道它最终会需要连接到一个StringB

2015-12-15 15:22:34 466

原创 HashMap源码分析

最近看见不少文章提到HashMap 源码, 这里就来具体分析一下HashMap源码

2015-12-14 22:06:41 366

原创 AIDL总结

最近集中看了一下Service,本地那块因为之前有过接触所以没什么问题,主要是关注了一下Service和IntentService的问题,其他的生命周期之类的比较容易所以直接带过.这里主要的就是远程Service,也是就是AIDL的问题.当然实现在网上查了不少的资料,由于是在Android Studio上实现的,所以跟网上大多数教程都不一样,包括创建,实现等等,搞得时间比较长 首先就是AIDL文件的

2015-12-14 21:30:35 395

转载 Dalvik和JVM的区别

1.Dalvik基于寄存器,而JVM基于栈.基于寄存器的虚拟机对于更大的程序来说,在编译的时候,话费的时间更短 2.Dalvik主要是完成对象生命周期的管理,堆栈管理,安全和异常管理,以及垃圾回收等等重要功能. 3.Dalvik负责进程隔离和线程管理,每一个android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行. 4.不同于java虚拟机

2015-12-14 21:27:35 517

转载 单例模式详解

单例模式详解详细的总结一下单例模式,首先基本的分为懒汉式和饿汉式,懒汉即为在使用的时候初始化,饿汉即为在类加载的时候初始化, **饿汉式 public class Singleton{ private final static Singleton instance = new Singleton(); private Singleton {}

2015-12-14 20:43:00 358

原创 initializeScrollbars() 方法不存在

initializeScrollbars() 方法不存在最近在项目中总是遇到编译错误,而且都是导入的开源库出的问题initializeScrollbars()是OneXListview开源库中的一个方法,但是这个方法在android api 21 就已经被remove了,所以用android sdk 21之后的版本编译的话会出现方法找不到的问题.同样的问题,也出现在了gestureImageVie

2015-12-14 20:25:32 1795

原创 将github上开源项目导入AndroidStudio中

最近突然有这个需求,虽然上网查了很多,但是大多部分都是基于Eclipse的,基本上没有AndroidStudio相关的资料,但是经过多次试验,已然成功.特此分享 首先在github上clone或者download一份源码,这个自不必多说.之后在AS中新建一个项目,并且将项目左边目录切换成project模式.    1.在 project/ 下创建library目录,(非必须,但是为了可

2015-12-14 20:13:44 544

空空如也

空空如也

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

TA关注的人

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