- 博客(24)
- 收藏
- 关注
原创 LayoutInflater.inflate方法浅析
在Android中,LayoutInflater.inflate()方法一般用于加载布局,相信很多朋友对它已经很熟悉了,但inflate()方法是如何实现的可能有些朋友还不是很清楚,inflater()在使用的时候都有哪些注意事项呢?让我们来简单分析下:首先不妨来看看Fragment的onCreateView方法,它包含了几个参数,一个LayoutInflater,一个ViewGroup,和一个传递
2015-11-30 13:19:59 427
原创 Activity onNewIntent方法浅析
onNewIntent方法一般用于lanchmode为singleTop,singleTask,singleInstance等可复用的activity中,当这些已实例化的activity重新被复用时,就会调用onNewIntent方法。正如字面上的意思,onNewIntent负责处理activity收到的新的intent。Activity中onNewIntent源码如下:/** * Thi
2015-11-20 12:30:46 757
原创 Date和String.format常见用法
目前的java版本Date类主要通过SimpleDateFormat和Calendar类进行处理。SimpleDateFormat按照一定的格式对Date和String进行转换,Calendar类根据国际化标准,构造Date.举例两个常见用法: 计算两个日期的天数/** * 计算两个日期间的天数 */ public static long getDayNum(Strin
2015-11-17 19:26:33 630
原创 LinearLayout和RelativeLayout的特殊属性
Relativelayout属性: 属性名称 描述 android:layout_centerHorizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全 居中 android:layout_alignParentBottom 贴紧父元素的下边缘
2015-11-17 13:03:52 1618
原创 AsyncTask原理详解
在Android中,Handler和AsyncTask都是与异步执行相关的类,Handler主要负责各线程间接收、传递消息,而AsyncTask则主要负责异步操作的处理,其中,doInBackGround()方法负责异步任务的处理、onProgressUpdate()方法则在异步执行过程中调用publishProgress()时回调,以随时更新UI。onPostExecute()方法则是当异步执行
2015-11-12 23:03:56 1311 1
转载 好博客要记录:Activity的launchMode分析 及 Intent.FLAG_NEW_TASK详解
Activity的启动模式共有四种,分别如下:1、standard2、singleTop3、singleTask4、singleInstance这里我们分两种情况讨论上述四种启动模式:app内和app之间首先讨论app内standard:不论当前任务栈中是否存在该Activity,都会新建一个Activity,如 任务栈为A B,要启动B 那么任务栈为 A B Bs
2015-11-12 23:03:54 374
原创 基于LinkedBlockingQueue源码自我实现阻塞队列
LinkedBlockingQueue是一个阻塞的、线程安全的、由链表实现的双向队列,和ArrayBlockingQueue一样,是最普通也是最常用的阻塞队列。现基于LinkedBlockingQueue源码自我实现一个单向的、简化版的LinkedBlockingQueue.package com.lzq.newInterview;import java.util.concurre
2015-11-12 23:03:35 377 1
转载 好博客要记录:HTTP中Get与Post的区别
原文地址:http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资
2015-11-12 23:03:32 279
转载 当你输入一个网址的时候,实际会发生什么?
当你输入一个网址的时候,实际会发生什么? 原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文
2015-11-12 23:03:27 369
原创 Future、FutureTask浅析
Futurer多用于耗时线程的计算,主线程可以在完成自己的任务后,再去查询该Future是否执行完毕并获取结果。他有一个回调函数protected void done(),当任务结束时,该回调函数会被触发。因此,只需重载该函数,即可实现在线程刚结束时就做一些事情。Future可对具体的调度任务的执行结果进行查看,最为关键的是它可以检查对应的任务是否已经完成(isDone),也可以阻塞在get方
2015-11-12 23:03:20 355 1
原创 ThreadLocal源码浅析
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作来创建的
2015-11-12 23:03:17 326
原创 经典问题之生产者-消费者问题——Lock实现
经典问题之生产者-消费者问题——Lock实现。package com.lzq.newInterview;import java.util.LinkedList;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;
2015-11-12 23:03:12 652
转载 好博客要记录:ConcurrentHashMap之实现细节
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突,结果可想而知。还是闲话少说,通过仔细阅读源代码
2015-11-12 23:03:07 265
转载 好博客要记录:java中关键字volatile的作用
在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄存器)。为了性能,一个线程会在自己的memory中保持要访问的变量的副本。这样就会出现同一个变量在某个瞬间,在一个线程的memory中的值可能与另外一个线程memory中的值,或者main memory中的值不一致的情况。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的
2015-11-12 23:03:04 246
转载 好博客要记录:对象的强、软、弱和虚引用
对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 ⑴强引用(StrongReference)强引用是使用
2015-11-12 23:03:02 234
转载 好博客要记录:JVM基础概念总结:数据类型、堆与栈、基本类型与引用类型
JVM基础概念总结:数据类型、堆与栈、基本类型与引用类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。 基本类型包括:byte, short, int, long, char, float, d
2015-11-12 23:02:59 1132 2
转载 好博客要记录:JVM分代垃圾回收策略的基础概念
JVM分代垃圾回收策略的基础概念由于不同对象的生命周期不一样,因此在JVM的垃圾回收策略中有分代这一策略。本文介绍了分代策略的目标,如何分代,以及垃圾回收的触发因素。文章总结了JVM垃圾回收策略为什么要分代,如何分代,以及垃圾回收的触发因素。为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集
2015-11-12 23:02:57 272
原创 自我实现ArrayList
面试者经常遇到集合类源码的问题。我们不求将所有的细节都记住,但ArrayList与LinkedList比较、add、get、remove、扩容、及相关时间复杂度等核心思想要说得一清二楚。ArrayList底层用数组实现,可以快速访问某一节点的值,但插入删除会调用System.arraycopy方法,数组容量不够时需进行扩容,扩容采用新的大数组取代旧的数组。 public class
2015-11-12 23:02:54 401 1
原创 自我实现HashMap
面试官要你自己实现HashMap,无非就是考查对JDK中HashMap的理解。Thinking in JAVA中的 SlowHashMap就不要记了,直接参考JDK写代码吧。HashMap以键值对的方式存储数据,数据结构可理解为“链表的数组”。通过插入元素key值的hashcode和自带的hash算法决定元素的存储位置,发生hash冲突则在此节点下拉一个二元组链表,依次比较链表中的key是否与
2015-11-12 23:02:52 319
原创 浅析Android View的Layout过程
Layout过程是View的三大过程之一,它负责确定一个View和它的子元素的最终位置。与measure过程类似,layout过程也分为layout()和onLayout()两个核心方法。layout负责确定view本身的位置,而layout主要负责确定所有子元素的位置。首先让我们来看看layout方法:public void layout(int l, int t, int r, int b)
2015-11-12 22:05:27 355
原创 Date、String.format常见用法
Date类常见用法:获取当天日期: SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); //获取simpleformat Calendar calendar = Calendar.getInstance();// 通过getInstance方法获取Calendar实例
2015-11-12 11:11:10 412
原创 浅析Android View的Measure过程
我们知道,View从创建到展示给用户包含了三大过程:measure过程、layout过程、draw过程,即测量、布局、绘制。而measure过程则是其中之首,它测量并确定了view的宽高。现总结下view的measure过程。View的measure过程包含了两个核心方法:onMeasure() 方法:protected void onMeasure(i
2015-11-07 16:47:20 342
原创 搬迁学习笔记2——The specified child already has a parent的解决方法
Activity通过setContentView()方法来设定它的布局文件,而布局文件一般都是一个viewGroup,ViewGroup是个view的容器,可以放置很多个View 常见的有LinearLayout RelativeLayout等等。View的继承关系如下:View -> ViewGroup -> 各种Layout。我们有时需要改变一个Activity的布局文
2015-11-06 15:43:01 330
原创 搬迁学习笔记1——Handler的基本使用、子线程更新UI的方式
Handler是Android消息传递的一种机制,可用于在子线程做更新UI(实际上还是在UI线程中更新),与Handler相关联的类有Looper,Message等。Handler的方法有post() sendmessage()等。子线程更新UI的方式: 1) handler.post(new Runnable())方法。 注意:这个Handler必须为主线程的
2015-11-06 15:33:21 345
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人