自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 android里序列化和反序列化的综合分析

1.什么叫做序列化与反序列化呢?    java的序列化就是指把java对象转换成字节序列的过程。而java反序列化就是指把字节序列恢复为java对象的过程。   2.为什么需要序列化和反序列化   我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。那么当两个Java进程进行通信时,能否实现进程

2017-07-09 15:20:07 237

原创 即时通讯里android客户端心跳机制的分析和实现

最近项目中用到了即时通讯(IM)的模块,因此也就对即时通讯的长连接方式进行了研究,有了一点点自己的心得,所以写下了这篇博客。本篇博客是作者参考了他人的优秀博客和自己的一点点小感悟而写成的,如有理解不到位的地方,还望指正。      现在大多数的移动端应用都有实时得到消息的能力,简单来说,有发送消息的主动权和接收消息的被动权。      什么是主动权呢?就是客户端主动向服务器请求数据的过程(

2017-07-09 10:45:37 2268

原创 多线程中使用静态方法存在线程安全的问题

类的成员分两类,静态成员(static member)和实例成员(instance menber),静态成员属于类,实例成员则属于对象,即类的实例。   我们知道,静态字段和静态方法的调用都是通过类来调用的,静态方法不会对特定的实例操作,只能调用调用类中的其他属性和静态方法,不能调用类中的非静态属性和非静态方法。实例方法可以对特定的实例操作,既能访问静态属性和静态方法,也能访问实例属性和实例方

2017-05-15 11:04:57 15575 2

原创 Android自定义View的长按事件的思考

在写自定义view的时候经常会遇到需要为其添加长按事件的情况,当然,这里分几种情况,比如该自定义view如果是继承自listView或者是gridView的话,可以直接为其建立一个长按监听器: listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override

2017-05-09 16:54:38 5590

原创 Android Handler造成的内存泄漏的分析j

在分析之前先补充下java的基本知识,与本文的分析有着重大的联系:在java中,非静态(匿名)内部类会默认隐性引用外部类对象,而静态的内部类不会引用外部类对象,注意与静态变量的区别,静态变量是会引用外部类变量的  在Android中,Handler也是造成内存泄露的一个重要的源头,主要是因为Handler属于TLS(Thread Local Storage)变量,生命周期和Activity是不

2017-05-08 18:49:43 142

原创 android 从全局的角度分析view的绘制机制(一)

这篇博客会从全局的角度来一步步分析view的绘制机制。    在这里先提前总结一下view的绘制流程,然后再对各个过程的源码进行分析(window,viewRoot,decorView):    1.系统启动一个Activity的同时创建一个ViewRoot实例。    2.Activity 在attach阶段生成一个PhoneWindow对象,它包含一个DecorView对象。

2017-05-04 09:42:32 211

原创 Android里应用程序,应用程序窗口和视图对象之间的关系

很久没更新博客了,在新博客里打算对android的view的绘制机制进行全方位分析,由于涉及到的范围相当之广(比消息机制里涉及到的还多,简直可怕),因此打算先来个总序来说清楚应用程序(activity),应用程序窗口(window)和视图对象(view)之间的关系,方便读者对接下来的博客(view的绘制)能更好地理解,这就是这篇博客的目的。   在Android里, 每一个Activity组件

2017-04-28 11:38:12 728

原创 Android中AsyncTask的介绍,示例和原理分析

默认情况下,在一个相同的android应用程序当中,其里面的组件都是运行在同一个线程里面的,这个线程我们称之为main thread,当我们通过某个组件来启动另一个组件的时候,这个时候默认是在同一个线程当中完成的。Main thread用来加载我们的ui界面,完成系统和我们用户之间的交互,并将交互的结果展示给我们用户,所以main thread 又称为ui thread。因此,在android的多

2017-04-18 17:27:08 151

原创 Android中handler消息机制中的一些细节问题

本文的编写是以博主前三篇博客为基础的,如果对handler详细机制有不理解的同学可以去参考下我的前三篇博客。  1.在handler中,为什么能实现消息的延迟发送?   是因为在enqueueMessage方法中消息是按照其发送时间进行排列的,对应的代码为:boolean enqueueMessage(Message msg, long when) { .......

2017-04-14 16:11:48 334

原创 Android异步消息处理机制总结

之前三篇博客,分别对android消息处理机制中涉及到的looper和handler根据源代码进行了分析,那么在这篇本博客中,我们来对android消息处理机制做一个总结。还是老惯例,直接先上示例代码。   在子线程里实现更新ui的方式大家应该都知道,但是另一种形式的更新UI大家可能比较少见,在activity中:private Handler mHandler;//全局变量@Overrid

2017-04-14 09:22:34 220

原创 Android异步消息处理机制之handler机制

在之前分析了looper,以及实现了利用在主线程中利用重写handleMessage方法来更新ui(具体参见博主的前两篇博客),接下来我们主要来分析handler以及其post(runnable r)方法。   首先来看在post版本的异步更新ui,在Activity中:private Handler mHandler;//全局变量@Overrideprotected void onC

2017-04-13 17:48:17 171

原创 Android异步消息处理机制之looper机制续

本文主要是用来填一下在上篇博客《Android异步消息处理机制之looper机制》中留下的坑,上篇博客的地址为:http://blog.csdn.net/qq_28269905/article/details/69389751,以下正文。

2017-04-10 14:04:42 199

原创 Android异步消息处理机制之looper机制

在android系统的应用程序中,与java程序相似,线程之间都是靠消息来驱动的,与此工作相关的是由handler,looper以及message,messagequene来完成。简单来说就是每一个线程中有且只有一个消息队列MessageQueue,利用looper来获取当前的线程和消息队列,我们可以不断向这个消息队列中添加消息Message,接着再利用handler从looper得知当前的消息队

2017-04-06 15:02:35 241

翻译 android中intent-filter的分析和具体使用用例

意图过滤器(intent-filter)由清单文件中的元素定义,嵌入在相应的应用组件里(例如元素),在元素里,你可以使用这3个元素中的一个或多个来指定接收的意图类型:在name属性里,声明接收的意图操作,值必须是操作的纯字符串,不是类常量使用一个或多个属性来声明接收的数据类型,他们表示数据uri,和MIME类型的各个部分在name属性里声明意图分类,值必须是操作的纯字符串,不是类常量

2017-02-02 21:52:33 600

原创 java里GregorianCalendar类的应用

GregorianCalendar类可以用来表示大家熟悉的日历表示法(即今天是本月里这个星期的星期几,是这个月的几号等),事实上,GregorianCalendar类扩展了一个更加通用的Calender类,这个类描述了类的一般属性,例如,使用该类获得当前月和当前是星期几的代码示例:GregorianCalendar now=new GregorianCalendar();Int month=

2017-02-01 13:40:37 1293

原创 java里日期输出与参数索引的应用

本文里,使用以t开始,以下表中任意字母结束的两个字母格式,例如:System.out.printf(“%tc”,new Date());这条语句将用下面的格式打印当前时间:星期日 一月 29 10:46:26 CST 2017具体参见下表:格式化输出日期时参数索引的应用:在格式化输出日期时,由上表可知某些格式只给出了指定日期的部分信息,例如,只有日期

2017-01-29 11:18:57 1434 1

原创 console的使用及引申的输入输出重定向问题

为了解决Scanner类输入可见的问题,java SE 6特别引入了Console类来实现这个目的,以下是Console的使用示例:import java.io.Console;import java.util.*;public class  Welcome{public static void main(String[] args){Console con

2017-01-25 21:48:47 582

空空如也

空空如也

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

TA关注的人

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