- 博客(88)
- 资源 (1)
- 收藏
- 关注
原创 Binder详解
最近在阅读源码时屡屡被Binder给绕进去了,感觉这玩意好像特别的重要,所以就单独的抽出来仔细的研究下,本文主要是从java层面来分析,对于底层内核的Binder驱动就不做深入探讨了,由于本文是以AIDL的使用情景来分析的,所以对于不会使用AIDL的童鞋先看另一篇文章http://blog.csdn.net/u012481172/article/details/50925381。废话不多说。
2016-04-26 16:59:43 4621
原创 关于View的一些问题
1、View的回调方法的顺序是怎样的View从加载开始一些列的回调方法的流程如下: onFinishInflate()→onMeasure()→onSizeChanged()→onLayout()→onDraw()→onWindowFocusChanged()。onMeasure()和onLayout()以及onDraw()有可能会执行多次。
2016-02-22 14:02:07 525
原创 Android小知识清单(二)
1、Toast的另一种用法 Toast我们通常用来提示文字,但是也可以用来显示整个View来显示,如下: Toast toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.FILL, 0, 0); toast.setView(toastView); toast.show(
2016-02-22 11:16:17 587
原创 Android小知识清单(一)
1、invalidate()和postInvalidate()的区别: 对于invalidate()源码注释如下: *Invalidate the whole view. If the view is visible, * {@link #onDraw(android.graphics.Canvas)} will be called at some poi
2015-03-13 17:09:35 857
原创 Android项目的错误异常收集日志记录
今天上午把工作做完,下午就研究自己不懂的知识点,研究的情况如下:1)实现Android程序的异常捕捉日志记录上传到服务器: 主要是自己定义一个CrashHandler ,然后implements UncaughtExceptionHandler类。来实现捕捉异常。 其次自己实现一个Application,在其onCreate中注册CrashHandl
2014-12-17 18:02:32 1134
原创 Java基础概念
我们已知Java有三大主要特性:封装、继承、多态。为了更全面的探索学习,我们把接口、抽象也加入到其主要特性之列。故,本篇就探讨Java的五大特性:封装、继承、多态、接口、抽象。提供一个java学习网址:https://www.tutorialspoint.com/java/java_encapsulation.htm封装继承多态接口 封装封装是Java的基础特性之一。...
2018-07-21 15:49:29 1602
原创 AndroidStudio优化指南
1、AS打包时将无用的资源排除掉,使其不被打包进apk。在app.gradle中添加minifyEnabled true和shrinkResources true即可,如下: buildTypes { release { minifyEnabled true shrinkResources true min
2016-11-23 17:55:02 592
原创 SRS流媒体编译部署
一、下载代码: git clone https://github.com/ossrs/srs。 注意,下载完成后只有main.go,main.test.go,README.mk三个文件,此时要切换到分支上去,比如用以下命令是切换到srs2.0上: git pull && git checkout2.0release二、编译
2016-11-04 23:36:30 4891
原创 JS杂七杂八
一、JS跨域请求 浏览器对于JS跨域请求默认是关闭的,所谓跨域请求就是跨网站域名请求,比如在A站去请求B站的数据是不被允许的,严格来说跨域是指不同域名或不同端口号之间的请求,如下是区别:
2016-08-01 14:27:57 466
原创 View事件拦截的两种方法
通常ViewGroup要对事件进行拦截可以通过重写onInterceptTouchEvent()方法并返回true,就表示要对事件进行拦截,拦截之后事件就不会再传递到子View,自然的,子View的onTouchEvent()方法也不会被调用了。 另外如果你不想重写ViewGroup的onInterceptTouchEvent()来拦截事件的话,可以让父容器调用requestDisa
2016-04-29 13:12:20 6365
原创 Android初窥
一、App如何存在于系统? Android APP是用Java语言编写的由Android SDK工具编译并和其它资源文件一起打包到APK文件。一个APK文件包含了要安装的App所需要的一切内容。一单安装到设备上,每一个Android APP就生存在它自己的安全沙箱。 (1)Android操作系统是一个多用户Linux系统,每一个app就是一个不同的用户。 (2)系
2016-04-28 12:48:40 394
原创 BindService详解
Service启动得两种方式分别为startService()、bindService(),但是他们的使用场景是不一样的。。。
2016-04-27 16:19:16 6747 2
原创 关于NoClassDefFoundError错误
以前遇到过NoClassDefFoundError错误,解决后也没当回事,然后今天又出现了,所以记录下。 NoClassDefFoundError是一个错误,而ClassNOtFoundException是一个异常,这是有区别的。 NoClassDefFoundError出现在Android中都是由于没有打包进dex文件中所导致的,我几次遇到这样的情况就是首先反编译dex
2016-04-14 12:59:55 971
原创 Android应用的uid和pid
大家在用开发工具连接手机时一定见过下图的进程编号: PID和UID存在的意义 Pid是进程ID,Uid是用户ID,只是Android和计算机不一样,计算机每个用户都具有一个Uid,哪个用户start的程序,这个程序的Uid就是那个用户,而Android中每个程序都有一个Uid,默认情况下,Android会给每个程序分配一个普通级别互不相同的 Uid,如果应用之间要互
2016-04-08 13:26:15 6092
原创 Android中获取各种服务是哪里来的
当app第一次加载时就开始注册了那些服务,具体来说就是在应用创建ContextImpl实例的时候调用了SystemServiceRegistry类来进行注册,其注册的服务(就是具体的相关的服务的实例)保存在HashMap的对象SYSTEM_SERVICE_FETCHERS中: private static final HashMap> SYSTEM_SERVICE_FETCHERS
2016-03-30 12:26:33 1821
原创 JVM之类加载机制
在上一篇文章中我们了解了Class文件存储格式的具体细节,在Class文件中描述的各种信息,最终都要加载到虚拟机中之后才能运行和使用。而虚拟机如何加载这些Class文件?Class文件中的信息进入到虚拟机后会发生什么变化?这些都是本文所需要解决的问题! 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化最终形成了可以被虚拟机直接使用的Java类型,这就
2016-03-26 19:55:28 300
原创 JVM之类文件结构
实现语言无关性的基础仍然是虚拟机和字节码存储格式。Java虚拟机不和包括Java在内的任何语言绑定,它至于“Class”文件这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指令集和符号表以及若干其它辅助信息。 Java语言中的各种变量、关键字和运算符号的语义最终都是有多条字节码指令组合而成,因此字节码命令所能提供的语义描述能力肯定会比Java语言本身更加强大。
2016-03-22 21:35:57 1625
转载 从init.rc说起
1 简述Android init.rc文件由系统第一个启动的init程序解析,此文件由语句组成,主要包含了四种类型的语句:Action,Commands,Services,Options.在init.rc文件中一条语句通常是占据一行.单词之间是通过空格符来相隔的.如果需要在单词内使用空格,那么得使用转义字符"\",如果在一行的末尾有一个反斜杠,那么是换行折叠符号,应该和下一行合并成一起来处
2016-03-22 11:12:05 293
原创 C/C++拾起
static关键字 static修饰的全局变量和函数只能在本文件类使用。const关键字 const是指常数,这种数存放在rom中,也就是硬盘里,只有使用的时候才读取到内存。const数不能被修改,也不能是局部变量。
2016-03-21 15:10:36 295
原创 AIDL的使用
什么是AIDL aidl的全称是Android Interface Definition Language,这是为了实现跨进程通信而在客户端和服务端编写的接口。
2016-03-21 13:37:00 552 1
原创 JVM之垃圾收集器与分配策略
通过以上JVM两篇文章的介绍,我们大致了解了Java的内存模型以及对象的存储和分配,本文在基于以上知识开始讲解内存的回收,本文尝试解决以下的几个问题: (1)哪些内存需要回收? (2)什么时候进行内存回收? (3)如何回收内存? 上篇文章文章我们已经讲解了Java内存运行时内存区域的各个部分,其中程序计数器、虚拟机栈和本地方法栈三个区域随线程而生随线程而灭;栈中的栈帧随着方法的
2016-03-20 22:37:12 442
原创 Java之问(一)
如何强制执行垃圾回收? (1)首先,垃圾回收是JVM自动处理的,我们不能强制致敬,尽管我们可以调用System.gc()。 (2)JVM不能保证GC能够直接开始回收。 (3)每一个class都从Object基础了finalize()方法。 (4)当垃圾回收器觉得应用中没有更多的引用对象存在时就会调用finalize()。因此我们手动调用finalize()并没有什么多大作用
2016-03-20 11:35:50 309
原创 JVM之Java程序与内存映射
什么是JVM 首先看下一个Java程序是如何在机器上执行的: Java源程序(.java文件)-->Java编译器(如Eclipse) -->字节码(.class文件)-->JVM编译器--> 装配 -->机器码 --> 经过系统总线 -->微处理器-->逻辑门 -->电路 -->设备硬件.
2016-03-19 21:34:09 1104
原创 Java到底是值传递还是引用传递
在Java中,方法的参数传递永远是值传递,不存在引用传递。 实际上,如果一个方法的参数是一个对象,那么当传递这个对象的时候实际上是传递的一个对象的地址过来,而不是传递的一个引用(变量)更不是对象本身,所谓引用变量就是我们 A a = new A(),此a就是一个引用变量,它的值就是一个指向A对象的地址。如果我们把a作为某一个方法的参数传递过去,那么此时传递的仅仅是这个引用a的值(对象的地址)
2016-03-18 23:39:53 305
原创 finally会执行吗
如下代码,finally里的代码是否会执行?public class MainQueue { public static void main(String args[]) { System.out.println(MainQueue.test()); } public static int test() { try { return 0; } finally {
2016-03-18 23:11:54 375
原创 Lock & Condition
Synchronized同步块的不足 在多线程环境下保证线程同步的方法大多是使用synchronized关键字,但是这个关键字在某些环境下是很死板的。其主要缺点如下: (1)如果一个线程已经在一个synchronized块中执行,另一个线程视图进入这个同步块,那么它必须等待直到当前占用这那个同步块的线程执行完并退出。如果线程一直没有进入同步块,那么那个等待的线程就一直
2016-03-18 12:17:11 358
原创 Dalvik虚拟机详解(上)
什么是Dalvik? 首先,每一个Android应用都运行在它自己的进程中也就是它自己的Dalvik虚拟机实例,也即每个app都有自己的dalvik虚拟机实例,他们都是私有的不共享的。Dalvik虚拟机一开始就被设计成可以在一个设备上高效的大量运行(Dalvik虚拟机实例)。Dalvik虚拟机执行器会执行.dex格式的文件。Dalvik虚拟机是基于寄存器的。什么是Zygote?
2016-03-15 17:44:20 6767
原创 如何正确停止一个线程
首先肯定是不能用Thread的stop()方法的,因为此方法是非常不安全的,而且已经被废弃了,那么在这里就给出一种官方的推荐方案。 private static Thread mThread; private static Thread mThread; static StringMain.MyRunnable mRunnable = new StringMain().new MyRu
2016-03-01 14:27:36 7600
原创 BlockingQueue!
Queue接口继承了Collection接口,其内部定义了六个方法,分为三大类,分别是新增元素、删除元素、检索元素。每一个大类都提供了两个方法,这两个方法的作用可以用下面的表格来描述: (1).add()和offer():这两个方法是向队列添加元素,不同之处在于如果队列已经添加满了还继续添加add()方法就会抛出异常,而offer()会返回false值(如果队列没有满,则of
2016-01-06 16:47:02 3277
原创 Ant之Task
每个Task都是一系列的可执行的代码。 一个Task可以包含大量的属性,属性值也可以引用Property,这些引用都会在执行之前由Ant完成解析。
2015-12-10 23:41:27 1075
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人