
Java
矢口
这个作者很懒,什么都没留下…
展开
-
《Android开发艺术探索》笔记目录
该笔记以《Android开发艺术探索》为基础,结合Android 9.0代码和官方文档,修正了原书中表述不明确和过时的部分,同时加入了大量的个人理解。13章,14章,15章是总结性的章节,没有列出,建议直接看原书。Android开发艺术探索 - 第1章 Activity的生命周期和启动模式Android开发艺术探索 - 第2章 IPC机制Android开发艺术探索 - 第3章 View的事...原创 2019-06-18 12:12:20 · 745 阅读 · 0 评论 -
Android 透明状态栏
写这篇文实在是因为网上流传了太多鱼龙混杂的文章,各种东拼西凑,而且只讲方法不讲道理。所以我尽量做到,最后给出的解决方案是能看得懂的。这里不讨论”沉浸式“”沉浸式状态栏“”透明状态栏“的定义,能知道我这篇讲的是”透明状态栏“,说明这些概念你已经搞清楚了。真正意义上的(全)透明状态栏,只有Android 5.0及以上才支持关于windowTranslucentStatu原创 2017-11-06 23:00:05 · 550 阅读 · 0 评论 -
Java中普通代码块,构造代码块,静态代码块区别及代码示例
转自 Java中普通代码块,构造代码块,静态代码块区别及代码示例//执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。1 普通代码块 1 //普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现转载 2017-10-10 21:59:46 · 867 阅读 · 0 评论 -
How is android.Manifest.class created?
参考自How is android.Manifest.class created?感谢 stackoverflow 。when compiling AOSP there is a couple of Manifest.java files created automatically.Manifest.classManifest$permission.class转载 2015-12-26 18:38:24 · 829 阅读 · 0 评论 -
Eclipse 4.2 Juno 黑色主题
转自打造超炫的专属Eclipse1. 确保你的Eclipse是最新版本(Juno版),早先的版本可能不支持。2. 在下面所给的链接下载Dark Juno主题(项目主页https://github.com/rogerdudler/eclipse-ui-themes),它修改了Eclipse所有的视图的颜色,工具栏也变成了暗黑主题。当然,我们还需要修改编辑器的颜色主转载 2014-12-27 10:20:37 · 7827 阅读 · 7 评论 -
避免Android开发中的ANR
转自避免Android开发中的ANR原文链接已废,本文原作者节译自google 2010 i/o开发者大会官方视频,可点击这里查看官方演讲pdf。ANR是什么ANRs (“Application Not Responding”),意思是”应用没有响应“。在如下情况下,Android会报出ANR错误:– 主线程 (“事件处理线程” / “UI线程”) 在5秒内没有转载 2015-03-04 00:32:14 · 517 阅读 · 1 评论 -
Handler Class Should be Static or Leaks Occur
转自Handler Class Should be Static or Leaks Occur在使用Handler更新UI的时候,我是这样写的:?123456789public class SampleActivity extends Activity {转载 2015-03-01 01:34:16 · 613 阅读 · 1 评论 -
Ubuntu14.04下Eclipse崩溃“crash: fatal error in soup_session_feature_detach”修复办法
参考Bug 404776 - crash: fatal error in soup_session_feature_detach with WebKitGTK+ >= 1.11.91For a workaround add the following to the end of your eclipse.ini-Dorg.eclipse.swt.browser.DefaultType=mozilla转载 2015-02-13 01:25:40 · 844 阅读 · 0 评论 -
Java抽象类与接口的区别
转自Java抽象类与接口的区别在讨论它们之间的不同点之前,我们先看看抽象类、接口各自的特性。抽象类抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。以JDK中的GenericServlet为例:12345678转载 2015-02-23 22:34:36 · 542 阅读 · 0 评论 -
详解java内部类
转自java提高篇(八)----详解内部类可以将一个类的定义放在另一个类的定义内部,这就是内部类。 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二)。第一次见面 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类。public cla转载 2015-01-05 22:04:48 · 504 阅读 · 0 评论 -
Android开发艺术探索 - 第1章 Activity的生命周期和启动模式
第1章 Activity的生命周期和启动模式1. 生命周期基本情况onStart和onStop根据是否可见被回调;onResume和onPause根据是否在前台被回调。实际使用中没有其他区别。onRestart当由不可见变为可见时回调。由A启动B,在A的onPause执行完之前,B不会被创建。所以在onPause中不能执行过多的操作。异常情况设备配置改变或者内存不足时,Act...原创 2019-06-17 16:52:24 · 230 阅读 · 0 评论 -
Android开发艺术探索 - 第2章 IPC机制
1.多进程模式给四大组件指定android:process。命名方式:“:”开头,该process将是application的私有进程,最终的process名会加上package前缀;小写字母开头,该process将是全局进程,多个application可以共享该process。多进程造成的问题:静态成员和单例模式失效线程同步机制失效SharedPreferences可靠性下降App...原创 2019-06-17 16:53:57 · 277 阅读 · 0 评论 -
Android开发艺术探索 - 第3章 View的事件体系
1.基础知识位置参数:left/top/right/bottom是左上和右下的原始坐标位置,不会改变。translation*是相对于left和top的偏移量,默认是0。x/y是左上角当前(所看到的)的坐标。x = left + translationXy = top + translationYMotionEvent:触摸事件ACTION_DOWN/ACTION_...原创 2019-06-17 16:55:54 · 263 阅读 · 0 评论 -
Android开发艺术探索 - 第12章 Bitmap的加载和cache
1.Bitmap高效加载加载Bitmap的方法:使用BitmapFactory的decodeFile/decodeResource/decodeStream/decodeByteArray可以分别从,文件/资源/输入流/字节数组中加载一个Bitmap。decodeFile/decodeResource会间接调用decodeStream。通过采样率控制加载出的Bitmap的大小,以提高加载效率:...原创 2019-06-18 11:55:01 · 395 阅读 · 0 评论 -
Android开发艺术探索 - 第11章 Android的线程和线程池
Android的主线程主要是运行四大组件以及处理其与用户的交互;而子线程用于执行耗时任务,如网络请求,I/O操作。1.Android中的线程形态AsyncTask在线程池中执行后台任务,其封装了Thread和Handler,通过execute方法执行AsyncTask。关键方法:onPreExecute:在执行execute方法的线程中运行,一般为主线程,用于执行在开始异步任务之前的一...原创 2019-06-18 11:54:51 · 814 阅读 · 0 评论 -
Android开发艺术探索 - 第10章 Android的消息机制
1.概述Handler的作用是将一个任务切换到指定的线程去执行。UI操作只能在主线程进行,这个限制是在ViewRootImpl#checkThread中实现的:void checkThread() { if (mThread != Thread.currentThread()) { throw new CalledFromWrongThreadException( ...原创 2019-06-17 17:06:33 · 224 阅读 · 0 评论 -
Android开发艺术探索 - 第9章 四大组件的工作过程
1.Activity启动过程 ref从Activity的startActivity方法开始。startActivity的多个重载方法,最终都会调用startActivityForResult方法。mParent代表的是ActivityGroup,API 13之前用于在一个界面中嵌入多个Activity,之后被Fragment替代,所以这里一般为null。该方法中主要调用了Instrumentat...原创 2019-06-17 17:04:34 · 292 阅读 · 0 评论 -
Android开发艺术探索 - 第8章 理解Window和WindowManager
一些说明:refWindow和View很多时候会彼此混杂,概念模糊不清。比如windowManager.addView实际上将View添加到WM对应的Window当中,并不是添加了一个新的Window,但是为其指定的LayoutParams的type含义却是Window的类型。Window的存在意义,实际上是将View的创建、ViewRootImpl和View交互的操作,从Activity/...原创 2019-06-17 17:03:50 · 387 阅读 · 0 评论 -
Android开发艺术探索 - 第7章 Android动画深入分析
Animation resourcesProperty Animation Overview1.View动画Tween补间动画四种动画效果,平移TranslateAnimation、缩放ScaleAnimation、旋转RotateAnimation和透明度AlphaAnimation,xml中对应四种标签的定义方式(res/anim/xxx.xml):<?xml version=...原创 2019-06-17 17:03:00 · 288 阅读 · 0 评论 -
Android开发艺术探索 - 第6章 Android的Drawable
Drawable表示了可绘制对象。getIntrinsicWidth/getIntrinsicHeight获取固有的宽高。对于BitmapDrawable来说,该方法返回其图片的宽高,对于shape类型的,默认返回-1。显示在View中的drawable会被拉伸或缩小为View的大小,固有宽高和其最终显示在View中的宽高不一定相等。一部分Drawable中用到的level的范围是0-1000...原创 2019-06-17 17:01:22 · 301 阅读 · 0 评论 -
Android开发艺术探索 - 第5章 理解RemoteViews
1.RemoteViews应用RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.layout_notication);remoteViews.setTextViewText(R.id.text, "text");remoteViews.setImageViewResource(R.id.image, R....原创 2019-06-17 16:58:49 · 239 阅读 · 0 评论 -
Android开发艺术探索 - 第4章 View的工作原理
1.ViewRoot和DecorViewViewRoot对应ViewRootImpl,实现了DecorView和WindowManager之间的交互。View的绘制流程从ViewRoot#performTraversals开始,经过measure、layout、draw最终将一个View绘制出来:例,measur过程:performMeasure->measure->onMea...原创 2019-06-17 16:58:12 · 215 阅读 · 0 评论 -
深入理解java的finalize
转自深入理解java的finalize基本预备相关知识 1 java的GC只负责内存相关的清理,所有其它资源的清理必须由程序员手工完成。要不然会引起资源泄露,有可能导致程序崩溃。 2 调用GC并不保证GC实际执行。 3 finalize抛出的未捕获异常只会导致该对象的finalize执行退出。 4 用户可以自己调用对象的finalize方法,但是这种调用转载 2015-01-04 20:45:00 · 664 阅读 · 0 评论 -
Java构造时成员初始化的陷阱
转自Java构造时成员初始化的陷阱让我们先来看两个类:Base和Derived类。注意其中的whenAmISet成员变量,和方法preProcess()public class Base{ Base() { preProcess(); } void preProcess() {}}public class Derived e转载 2015-01-04 18:01:00 · 539 阅读 · 0 评论 -
单链表反转的递归实现(Reversing a Linked List in Java, recursively)
转自There's code in one reply that spells it out, but you might find it easier to start from the bottom up, by asking and answering tiny questions (this is the approach in The Little Lisper):转载 2014-10-31 22:23:35 · 1907 阅读 · 0 评论 -
缓存算法
转自 原文:http://www.jtraining.com/component/content/article/35-jtraining-blog/98.html 翻译:http://www.zavakid.com/25引言 我们都听过 cache,当你问他们是什么是缓存的时候,他们会给你一个完美的答案,可是他们不知道缓存是怎么构建的,或者没有告转载 2014-10-28 17:47:31 · 523 阅读 · 0 评论 -
c++和java(c#)之间的pk
转自1、谁好谁坏? 如同当初我没有想到会进入java阵营一样,这次闯入c++阵营也是意料之外的。多年前,受到微软的影响,我几乎是微软的铁杆,对从QB到c#都是深入学习过的。我一直以为微软的软件是做的最人性化的,最好的。2年前,不经意的走进了java的大门,虽然我学习过java,但是对于这个不能做漂亮界面的语言一直有抵触的思想。这一次走入,让我成了java的忠实支持者。支持java转载 2014-07-30 18:07:45 · 674 阅读 · 0 评论 -
C#与C++、Java之比较概览
转自C#与C++、Java之比较概览Ben Albahari 著 荣耀 译本文翻译时间较早。欢迎指出任何误失。谢谢。感谢以下人士的支持和反馈(按字母先后顺序):Don Box、C.R. Manning、Joe Nalewabau、John Osborn、Thomas Rhode、Daryl Richter。本文以C#提供的新编程方式以及它对两个近邻转载 2014-07-30 23:42:35 · 642 阅读 · 0 评论 -
横向技术分析C#、C++和Java优劣
转自C#诞生之日起,关于C#与Java之间的论战便此起彼伏,至今不辍。抛却Microsoft与Sun之间的恩怨与口角,客观地从技术上讲,C#与Java都是对传统面向对象程序设计在组件化软件时代的革新之果,可谓殊途同归。虽说两个语言有着"90%的重叠",但那另外"10%的较量"也往往能够左右一个天平的方向。本文将携90%之共,论10%之异,对两个语言做纯技术品评。文章不涉及两个语转载 2014-07-30 23:11:34 · 628 阅读 · 0 评论 -
Java虚拟机工作原理详解
转自一、类加载器首先来看一下java程序的执行过程。 从这个框图很容易大体上了解java程序工作原理。首先,你写好java代码,保存到硬盘当中。然后你在命令行中输入[java] view plaincopyjavac YourClassName.j转载 2014-05-27 21:59:26 · 575 阅读 · 0 评论 -
深入解析java虚拟机-jvm运行机制
转自oschina一:JVM基础概念 JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现。编译虚拟机的指令集与编译微处理器的指令集非常类似。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JV转载 2014-05-30 23:13:37 · 6369 阅读 · 0 评论 -
JAVA与编译语言及解释语言的关系
编译型语言是一次性编译成机器码,脱离开发环境独立运行,所以运行效率较高,但是由于编译成的是特定平台上机器码,所以可移植性差。编译型语言的典型代表有C、C++、FORTRAN、Pascal等。解释型语言是专门的解释器对源程序逐行解释成特定平台的机器码并执行的语言。解释型语言通常不会进行整体性的编译和链接处理,解释语言相当于把编译型语言的编译和解释过程混合到了一起同时完成。转载 2014-05-27 22:30:06 · 796 阅读 · 0 评论 -
java虚拟机运行机制
首先简单阐述下解释型语言和编译型语言的联系与区别。 编译型语言是通过编译器将程序编译成目标机器所能识别的机器码,而解释型语言不需要编译过程。由该语言的解释器读取脚本,按照语法规则进行解释,然后调用解释器内建的命令(或者库函数)。例如,C语言的printf()函数经过静态编译后,printf()所需的所以代码都以机器码的形式写入可执行文件中,shell在执行程序时,在指定路径搜索该文件,然转载 2014-05-30 23:04:21 · 1109 阅读 · 0 评论 -
Java中equals和==的区别
转自Java中equals和==的区别java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。 2.复合数据类型(类) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非转载 2014-12-16 22:37:08 · 484 阅读 · 0 评论 -
安装JDK后JRE与JVM联系浅谈
转自安装JDK后JRE与JVM联系浅谈安装JDK后JRE、JVM之间的关系是什么呢?那么我们要从安装JDK慢慢说起。如果安装了JDK,会发同你的电脑有两套JRE:一套位于 \jre另外一套位于 C:\Program Files\Java\j2re1.4.1_01 目录下后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Se转载 2014-12-03 18:44:35 · 1183 阅读 · 0 评论 -
一个例子让你了解Java反射机制
转自一个例子让你了解Java反射机制通俗地说,反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作,希望读者能理解,也就是说,类,类的成员,我们在运行的时候还可以动态地去操作他们.理论的东东太多也没用,下面我们看看实践 Demo ~Demo:[java] view plaincopyprin转载 2015-01-30 00:50:38 · 626 阅读 · 0 评论 -
java移位运算符详解
转自java移位运算符详解java移位运算符不外乎就这三种:>(带符号右移)和>>>(无符号右移)。 1、左移运算符 左移运算符1)它的通用格式如下所示: value num 指定要移位值value 移动的位数。 左移的规则只记住一点:丢弃最高位(符号位),0补最低位。如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型转载 2015-01-02 20:31:16 · 986 阅读 · 0 评论 -
java native方法及JNI实例
转自java native方法及JNI实例1.参考文献:http://blog.youkuaiyun.com/youjianbo_han_87/article/details/2586375http://blog.youkuaiyun.com/yangjiali014/article/details/1633017http://blog.chinaunix.net/sp转载 2014-12-26 16:41:49 · 524 阅读 · 0 评论 -
Java中对象的串行化(Serialization)和transient关键字
转自Java中对象的串行化(Serialization)和transient关键字Java中的Serializable浅谈,只是浅谈一、串行化的概念和目的 1.什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力。叫作对象的持续性(转载 2014-12-25 18:29:23 · 567 阅读 · 0 评论 -
Java中hashCode的作用
转自Java中hashCode的作用以下是关于HashCode的官方文档定义:[plain] view plaincopyhashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。 hashCode 的常规协定是: 在 J转载 2014-12-24 22:20:40 · 797 阅读 · 2 评论