自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 ThreadLocal及在Android中的应用

ThreadLocal 在线程内部共享数据,而不是线程间共享数据。 ThreadLocal在Android中有多处应用,其中一处是在Looper中的应用:public final class Looper { ...省略static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<Looper>()

2016-05-31 21:32:03 696

转载 为什么说GUI是单线程化的

现代的gui框架使用了一个略微不同的模型:模型创建了一个专门的线程,事件派发线程(event dispatch thread,RDT)来处理gui事件。单线程化的GUI框架并不仅仅存在于java中:Qt、NextStep、Macos Cocoa、XWindows,等等都是单线程化的。也并不缺少反面的尝试;有很多试图写出多线程的GUI框架的努力,最终都由于竞争条件和死锁导致的稳定性问题,又回到了单线程

2016-05-31 14:39:13 2418

转载 Java线程

每当启动一个新线程的时候,Java虚拟机都会为它分配一个java栈。java以栈帧为单位保存线程的运行状态。虚拟机只会对java栈执行两种操作:以栈帧为单位的压栈或者出栈。java方法可以通过两种方式完成,一种通过return返回,成为正常返回;一种通过抛出异常而异常终止 。虚拟机都会将当前栈弹出java栈然后释放掉,这样上一个方法的栈帧就是当前栈帧了。java栈上是此对应的java线程所私有的。因

2016-05-31 09:43:43 378

原创 Java线程池

(一)线程池意义: 创建线程的代价较大,所以就是为了复用线程同时更好的控制线程的生命周期,减少在创建和销毁线程上所花的时间以及系统资源的开销,下面几点是摘自网上的观点。 1、现在服务器端的应用程序几乎都采用了“线程池”技术,这主要是为了提高系统效率。因为如果服务器对应每一个请求就创建一个线程的话,在很短的一段时间内就会产生很多创建和销毁线程动作,导致服务器在创建和销毁线程上花费的

2016-05-31 09:29:34 431

原创 Android异步消息处理之AsyncTask

首先看一下AsyncTask的基本结构 从中我们可以得到3个比较重要的信息点: 1、AsyncTask为了防止线程阻塞而用于执行简单的异步处理的类,为了与UI线程交互的,因此如果工作线程不与UI线程交互,无需使用AsyncTask,直接用Thread即可。 2、比起Handler实现异步的过程:需要使用到Handler, Looper, Message,Thread四个对象,并需要通过

2016-05-31 08:35:27 454

原创 Android异步消息处理之Looper,Handler,Message,MessageQueue

(一)Loop,Handler,Message,MessageQueuepublic final class Looper { // sThreadLocal.get() will return null unless you've called prepare(). static final ThreadLocal<Looper> sThreadLocal = new Thre

2016-05-29 10:19:19 346

原创 触摸手势详解

1 onTouchEvent与onTouchView.java(基于android2.3.3):public boolean dispatchTouchEvent(MotionEvent event) {//返回true,表示该View内部消化掉了所有事件。返回false,表示View内部只处理了ACTION_DOWN事件,事件继续传递,向上级View(ViewGroup)传递。if (li !

2016-05-27 09:03:59 621

原创 自定义View需注意问题

<LinearLayout android:layout_width="150dp" android:layout_height="150dp" > <!-- 使用自定义view --> <com.stone.view.CustomView1 ***android:layout

2016-05-24 08:38:56 858

原创 Android中的坐标总结

(1) View包括四个基本的布局成员变量(mLeft,mTop,mRight,mBottom),他们可以通过View.layout(int l, int t, int r, int b) 设置, layout的过程就是确定View在屏幕上显示的具体位置,在代码中就是设置其成员变量mLeft,mTop,mRight,mBottom的值,这几个值构成的矩形区域就是该View显示的位置,不过这里的具体位

2016-05-19 09:34:06 565

原创 canvas

canvas是画布的意思,有一点必须记清楚不管我们怎么移动和旋转画布我们所绘制的内容,一定是在画布上的,提到canvas我们必须首先要讲解它的一难以理解的方法(对我来说)rotate(degree)方法这个方法是花费我最长时间理解的方法,网上有好多说的都不对,这个方法是旋转,大家一定要记住它旋转的是坐标系,并不是画布我们可以通过一个小的例子进行验证如下部分代码canvas.drawRect(100,

2016-05-18 17:44:19 389

原创 Binder

Binder呢,其实就是一块内存,它在Linux层面属于一个驱动,但是这个驱动不是驱动硬件,而是驱动一块内存。 应用之间进行通讯,必须要有暗号,当两个应用持有相同的暗号(AIDL时),才可以进行通讯。Binder在Android系统中江湖地位非常之高。在Zygote孵化出system_server进程后,在system_server进程中出初始化支持整个Android framework的各种各样的

2016-05-12 09:02:46 411

原创 WindowManager

Android 大部分的系统Services 都运行在 System Server 这个进程里,用一个简单的方法来看看都有哪些重要的Service, “ps -t | grep ” 看看,System_Server进程有多繁重,里面有这么多的线程,图中黄色高亮的是各个service的主服务线程,每个service都会有一个服务主线程和若干个后台线程,实际运行中数量会动态增长,因为应用程序对S

2016-05-06 07:22:04 1581

原创 Android要点

1: Launcher实际上是一个activity,它是安卓系统中的桌面启动器,用来实现显示系统首页,即HOME界面public final class Launcher extends Activity implements View.OnClickListener, OnLongClickListener, LauncherModel.Callbacks,

2016-05-03 10:10:11 1011

原创 内存分段机制与分页机制

(一):逻辑地址(Logical Address) 指由程式产生的和段相关的偏移地址部分。例如,你在进行C语言指针编程中,能读取指针变量本身值(&amp;操作),实际上这个值就是逻辑地址,他是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Inte...

2015-12-30 09:41:46 1247

原创 回调

模块A和B配合做一件事情。模块A清楚在什么时间和地点做这件事情,但不清楚怎么去做;模块B相反,清楚怎么做,但不知道什么时间和地点去做。于是B把“怎么做”封装成了函数;A在合适的时间和地点调用此函数。这个函数就是回调函数。一件事情。模块A清楚在什么时间和地点做这件事情,但不清楚怎么去做;模块B相反,清楚怎么做,但不知道什么时间和地点去做。于是B把“怎么做”封装成了函数;A在合适的时间和地点调用此函数

2015-12-25 09:45:15 364

原创 Java<并发,并行>,<同步,异步>,<阻塞,非阻塞>

并发关乎结构,并行关乎执行阻塞,当前线程动作造成当前线程挂起就是阻塞,否则是非阻塞,一般异步是非阻塞一、同步与异步同步/异步, 它们是消息的通知机制1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin is

2015-12-05 13:52:42 782

原创 Android GestureDetector

GestureDetector是一个手势识别类,内部包含两个接口(OnDoubleTapListener,OnGestureListener)和一个类(SimpleOnGestureListener )

2015-05-12 13:31:34 389

转载 Android LayoutInflater原理分析

相信接触Android久一点的朋友对于LayoutInflater一定不会陌生,都会知道它主要是用于加载布局的。而刚接触Android的朋友可能对LayoutInflater不怎么熟悉,因为加载布局的任务通常都是在Activity中调用setContentView()方法来完成的。其实setContentView()方法的内部也是使用LayoutInflater来加载布局的,只不过这部分源码是in

2015-05-09 09:25:59 326

原创 View自定义注意问题

ViewGroup的onMeasure方法,测量的值应该是父容器的内边距加上所有子元素的测量宽高和外边距

2015-04-29 15:56:38 507

Java面试题以及答案

Java面试题以及答案,非常好的一本面试书籍,可以参考一下

2015-07-28

空空如也

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

TA关注的人

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