- 博客(36)
- 资源 (18)
- 收藏
- 关注
原创 android开发之网络请求框架比较
1、okhttp(高效),HttpURLConnection,HttpClient(android6.0移除了HttpClient)(1)HttpURLConnection:在Android 2.2版本之前,HttpClient拥有较少的bug,因此使用它是最好的选择。而在Android 2.3版本及以后,HttpURLConnection则是最佳的选择。它的API简单,体积较小,因而非常适用
2016-03-25 13:45:45
8370
1
原创 ListView的回收机制
一、RecycleBin ListView的回收机制是通过RecycleBin来完成的,这个类在AbsListView(AbsListView的子类有GridView和ListView)中,下面对这个类的关键成员变量和方法进行解释:1、变量mActiveViews:是一个view数组,用来存储屏幕上显示的View。2、变量mScrapViews:是一个ArrayList的数组,用来存
2015-12-24 17:02:01
1031
原创 Android开发之消息推送
一、消息推送的原理 首先,客户端会向服务器建立一个长连接,建立这个连接之后,相当于在客户端和服务器之间建立了一条信道,通过这个信道服务器可以向客户端推送消息,客户端也可以向服务器发消息。 建立这个长连接可以是TCP或者UDP。TCP的连接是比较消耗服务器的资源,如果要建立多个连接,要求服务器的性能很高。二、Android手机耗电原因 Android手机之所以耗电很快,而苹果手
2015-09-03 17:58:07
598
原创 Android源码分析之Handler机制
在Android的设计里面,是单线程机制的,也就是说在Android的设计里面只能在UI线程更新UI,不能再子线程直接更新UI的,那么,这个时候谷歌提供了handler机制来解决,UI线程和子线程之间的通信,使得在子线程里面可以通过handler来更新UI。下面分析一下Hanlder机制:1、Looper.prepare() Looper.prepare()是在应用程序启动的时候就在执行
2015-08-18 12:53:10
465
原创 Android源码分析之ListView
1、前言 ListView是一个比较复杂的控件,它可以在手机屏幕中显示很多条item,即使成百上千都不会出现OOM问题。这里顺便聊下我对源码分析的看法,源码分析的时候首先要有一个整体的分析,如分析Hanlder机制首先知道Hanlder执行的流程,从Looper.prepare()到Handler到Looper.loop()。ListView是一个控件,所以可以从View的绘制流程来
2015-08-16 12:48:58
1110
原创 HashMap的学习
一、HashMap相关面试问题1、HashMap与HashTable的区别(1)HashMap从Map中继承,HashTable从Dictionary继承(2)HashMap是线程非安全的,而HashTable是线程安全的,所以HashMap的效率要高些。(3)HashMap中允许key和value为null,而HashTable不允许键值对是null的。2、哈西算法(1)
2015-06-15 02:15:02
487
原创 Android开发之SparseArray简介
1、定义: SparseArray,即稀疏数组,这个对象和HashMap类似,也是一个容器,但是它的key是整数类型。 2、特点:SparseArray不需要对key和value进行auto- boxing(将原始类型封装为对象类型,比如把int类型封装成Integer类型),结构比HashMap简单(SparseArray内部主要使用 两个一维数组来保存数据,一个用来存key,一个用来存va
2015-06-14 21:23:48
534
原创 Activity和Window及View之间的关系
要说这个问题Activity与Window及View之间的关系,首先讲解下Activity是怎么显示布局的。我们知道通过setContentView或者LayoutInflater可以加载一个布局到Activity上,那么这个过程是怎样执行的呢? 执行setContentView的时候,进入Activity里面的源码可以知道,这个方法是Window对象执行的,也就是说Activity是没有
2015-06-14 01:57:26
1399
原创 Android之事件的四种写法
1、通过布局文件注册onClick属性事件。 public void onClick(View v) { System.out.println("执行点击事件!"); } 2、使用点击事件内部类 Button btnCall = (Button) findViewById(R.id.btn_call); btnC
2015-04-18 17:34:44
538
原创 设计模式之适配器模式
2.1、适配器模式(1)定义:将一个类的接口转换成客户所希望的接口,这样可以使得因接口不兼容而不能一起工作的类可以一起工作。(2)适用性:使用一个已经存在的类或者类库但是接口不符合需求。(3)参与者: Adaptee:已经存在的接口或者类,需要进行适配。 Adapter:适配后的类。 Target:需要适配的目标接口。(4)uml图(5)代码 目标接口Targe
2015-04-18 15:03:51
366
原创 设计模式目录
1、 创建型模式(5种)1.2、抽象工厂模式1.3、建造者模式1.4、单例模式1.5、原型模式2、 结构行模式(7种)2.1、适配器模式2.2、桥接模式2.3、组合模式2.4、装饰者模式2.5、外观模式2.6、享元模式2.7、代理模式3、行为型模式(11种)3.1、责任链模式3.2、命令模式3.3、解释器模式3.4、迭代模式3
2015-04-18 15:02:42
333
原创 java之软引用
一、java中的四种引用简介1、强引用:创建对象的引用,GC抛出OOM也不回收内存2、软引用:在OOM之前回收内存3、弱引用:在GC发现之后释放内存4、虚引用(幽灵引用):使用后就释放二、软引用的使用1、用途:软引用是主要用于内存敏感的高速缓存,在jvm报告内存不足之前会清除所有的软引用,这样以来gc就有可能收集软可及的对象,可能解决内存吃紧问题,避免内溢出。2、引用的
2015-04-18 14:32:22
722
原创 java虚拟机之HotSpot
一、HotSpot简介 HotSpot是sun公司从版本java1.3开始使用的默认虚拟机,Oracle公司的java1.7使用的也是HotSpot虚拟机。不同厂商之间的java虚拟机是不同的,但是它们都遵守java虚拟机规范。二、JIT简介 JIT的全名是Just-in-time,即时编译的意思。java程序编译成class文件,加载到内存后成为字节码。jvm在执行字节码时,采用
2015-04-18 14:29:55
1433
原创 java之内存泄露
一、过期引用导致的内存泄露注意:当对象不使用后将对象设置为null,这个时候虚拟机不一定释放该内存,至于什么时候释放由垃圾回收算法确定。当对象不在使用时,而不回收有可能出现内存泄露的问题。在Effective Java里面有一条建议,消除过期的对象引用。实例:JDK中栈的内存优化问题1、消除过期对象引用的原因(出现内存泄露的原因):随着栈的增加,然后再收缩,从栈中出来的对象将不会被
2015-04-18 14:27:05
659
原创 jvm之垃圾回收器
一、垃圾回收器简介1、概念:垃圾回收器是用来自动管理虚拟机中内存的,包括自动分配和自动回收的功能,免去了由程序员来释放内存的麻烦。2、原因:因为由程序员自己释放内存很可能会出现各种问题,如内存泄露或者悬挂引用,从而导致程序终止。二、常见垃圾回收算法1、引用计数器法(1)实现思路:当新的引用指向新的对象时;对象的计数器加1,当引用失效时,对象的计数器减1;当引用计数器的值变为0时
2015-04-18 14:22:58
1017
原创 虚拟机之内存管理
一、内存管理的两种方式 运行的程序要与内存进行交互。内存是操作系统中的重要资源,内存管理就是对内存进行分配和释放。内存的管理有两种方式:1、显示管理 对于C和C++这类编程语言是显示内存管理的典型代表。如C++,当程序通过new关键字创建新的对象之后,就会分配相应的内存资源,当程序不需要这些资源时,需要在代码上将其显示释放,一般通过delete方法来实现。这种方式管理内存容易出现内
2015-04-18 14:17:37
1041
原创 虚拟机简介
一、跨平台特性 java语言具有“一处编译,处处运行”的特性,这种特性正是因为java虚拟机的原因。二、虚拟机的作用1、为应用程序屏蔽操作系统的区别。 java虚拟机屏蔽了操作系统的底层实现,如在操作系统上创建一个线程,可以通过抽象的java.lang.Thread类来完成。而Thread类在不同的平台上的实现不同,其实现由虚拟机来实现。2、为程序提供运行时的支持能力。
2015-04-18 14:15:11
763
原创 java之内存优化的建议
1、使用final 在jdk里面的String类型是final的,所以String里面的方法也是final的,方法申明成final后java编译器会寻找机会内联所有的final方法(至于怎样内联由编译器决定),这样可以大大提高程序的运行性能。 补充:HotSpot虚拟机就使用了方法内联来优化虚拟机的运行效率,另外一种策略是热点优化。2、将过期引用置为null 当确定一个对
2015-04-18 14:04:19
670
原创 数据存储与访问二之SharedPrefrenced
一、SharedPrerence简介 很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Andro
2015-04-15 20:33:18
1112
原创 数据存储与访问一之文件
一、数据存储与访问 很多时候我们的软件需要对处理后的数据进行存储或再次访问。Android为数据存储提供了如下几种方式:文件、SharedPreferences(参数)、SQLite数据库、Content provider内容提供者、网络。二、文件的使用1、保存数据到手机内存 这里可以在Activity里获取两种路径,一种是getFilesDir(),一种是getCache
2015-04-15 20:24:29
688
原创 XML技术
一、XML简介 1、定义:XML的本质是一段字符串。 2、XML的应用场景: (1)XML具有跨平台性的特性,因此XML常被用来在不同系统之间进行数据交换。 (2)XML可以在保存数据的同时保存数据之间的关系。利用这一特点,它还经常用作应用程序配置文件来使用。二、xml语法 1.文档声明 (1)用来声明xml的基本属性,用来指挥解析引擎如何去解析
2015-04-15 20:16:11
405
原创 Android开发之单元测试
一、Android中常见测试1、黑盒测试: 是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。2、白盒测试: 又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。3、单元测试: 又称模块测试,是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。4、功能测试: 根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计
2015-04-14 23:53:38
505
原创 Android开发之五种布局
一、LinearLayout线性布局1、常见属性android:orientation="horizontal":制定线性布局的排列方式 水平 horizontal 垂直 verticalgravity 控制当前控件内容显示区域layout_gravity 当前控件在父元素的位置Layout_weight 额外空间分配(权重)android:v
2015-04-14 23:17:59
471
原创 Android开发简介
一、通信技术1、1G:模拟制式 只能进行语音通话。2、2G:GSM, CDMA 收发短信和邮件。3、2.5G :GPRS, EDGE,访问wap网络数据.(图片, 壁纸, 文字信息)。4、3G:WCDMA(联通), CDMA2000(电信), TD-SCDMA(移动),发微博, 查看高清图片, 小电影.。5、3.5G :HSDPA, HSDPA+。6、4G:TD-LTE ,
2015-04-14 17:57:25
542
原创 Servlet之请求和响应
一、Response1、Resonse的继承结构:ServletResponse--HttpServletResponse。2、含义:Response代表响应,响应消息中的状态码、响应头、实体内容都可以由它进行操作。3、Response的使用:(1)输出数据public class OutServlet extends HttpServlet { public void
2015-04-13 11:12:33
2144
原创 javaweb之Servlet
一、Servlet简介1、Servlet定义:sun公司提供的动态web资源开发技术。本质是上一段java小程序,要求这个小程序必须实现Servlet接口,以便服务器能够调用。2、使用Servlet的步骤:(1)继承HttpServlet接口public class MyFirstServlet extends HttpServlet { public void doGet
2015-04-12 22:06:07
521
原创 java之内存分配
一、内存模型简介 首先,我们的代码的内存分配都是在jvm上进行的,jvm是应用程序和操作系统的桥梁,正是jvm机制解决了跨平台的问题。所以,java程序的内存分配都是在jvm上进行的。下面说一下常见的内存:寄存器、栈内存、堆内存、常量池。 寄存器:jvm内部虚拟寄存器,存储速度很快,程序不可控制。 栈内存:用来保存局部变量的值,主要是基本类型的值和局部对象的引用指针。 堆内
2015-04-06 00:36:13
409
原创 java基础之正则表达式
一、基本概念1、正则表达式:符合一定规则的表达式。2、作用:用于专门操作字符串。3、特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。所以学习正则表达式,就是在学习一些特殊符号的使用。4、好处:可以简化对字符串的复杂操作。 弊端:符号定义越多,正则越长,阅读性越差。二、基本操作1、匹配:String matches方法。用规则匹配整个字符串,只要有
2015-04-04 17:55:20
424
原创 java高新之类加载器
1、类加载器:类加载器就是加载类的工具。当程序需要的某个类,那么需要通过类加载器把类的二进制加载到内存中.类加载器也是Java类。2、类加载器的关系图:3、类加载器原理:(1)当Java虚拟机要加载一个类时,到底派出哪个类加载器去加载呢?A、首先当前线程的类加载器去加载线程中的第一个类。B、如果类A中引用了类B,Java虚拟机将使用加载类A的类装载器来加载类B。 C
2015-04-03 23:15:13
516
原创 java基础之注解
一、基本概念1、注解的含义:注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。2、二、注解的使用三、注解与应用
2015-04-02 19:28:55
414
原创 java之动态代理
一、代理的基本概念1、生活中的代理:例如买一台电脑我们往往从代理商那里买,而不是直接跑去总部直接买,不管从哪里买电脑都是一样的,从代理那里买我们可以不用跑来跑去的,省去了很多烦。2、程序中的代理:要为已经存在的多个具有相同接口的目标类(有称为委托类)添加系统的功能,如异常处理、日记、方法运行的时间、事务管理等等,那么,该怎么做呢?如果我们直接修改接口实现显然违背了开闭原则,程序容易出错。有
2015-04-02 18:52:59
443
原创 java之类与类的关系
类与类之间的关系有继承、实现、依赖、关联(聚集)、组合、聚合。其中关联包括组合和聚合关系。1、继承:一个类继承另一类,或者一个接口继承另一接口,强调的是功能的扩充。uml图如下2、指类实现接口的功能,uml图如下3、依赖:是指一个对象调用了另外一个对象,常常表现在成员方法里面的参数。4、关联:一个类引用了另外的类,表现在成员变量里面。5、聚合:强调整
2015-03-21 12:35:55
548
原创 Android应用之离线功能的实现思路
当我们在开发手机App的时候可能需要实现断网也可以访问的应用场景,例如百度旅游、在路上等等这样的软件,就支持离线功能。里面有一个业务,就是用户可以在没有网络的情况下也可以使用游记添加、游记删除的功能。那么怎么做到断网后仍然可以使用我们的app呢?下面我谈谈离线app的实现方式。 在我最近做的一个项目里,实现了离线访问的功能。这款软件是与教育有关的一款软件,主要用户是高中老师和高中的家长,用
2015-03-20 22:00:37
7867
2
原创 java基础之面向对象的三个特性
一、面向对象 面向对象是软件开发的一种方法。它具有三个基本特点:封装、继承、多态。二、封装1、封装:是指隐藏对象的属性和实现细节,仅对外提供共共访问方式。2、好处:提高了代码的重用性和安全性。3、原则:把不需要对外部提供的方法隐藏;把属性隐藏,通过公共方法对其访问。4、程序实例: 在这个实例中我们封装了Person的一些属性,这里可以在方法中加入一些条件,如age必
2015-03-13 15:35:50
450
原创 HTTP通信的两种方式
注意:在进行Android开发测试HTTP通信时,要特别注意url地址,首先明确测试的工具是模拟器还是真机,在模拟器上可以使用“10.0.2.2:自己的端口号”,在真机测试时务必保证我们的服务端和手机客户端必须在同一网段,如我在学校测试电脑连接的是校园网,真机连接的也必须是校园网,不能是2g网络或者3g等等,其ip地址可以通过ipconfig查看本机的ip号。一、HTTP通信机制 在我们
2015-03-11 15:51:37
2037
原创 工作总结
一、解决问题的能力的提升 我们在软件开发的过程,其实可以说是一个解决问题的过程。解决问题的能力直接影响了我们软件开发的速度和效率,当然也就影响了我们的薪资,所以对于提升我们解决问题的能力是非常重要的。我们每个人遇到问题时,解决的方式都不尽相同,对于同一个问题,有的人很快就可以完成,有的人很久才完成。即使这个问题对于相同两人是从来没有见过的问题,他们解决的时间自然也不同。解决问题的能力或许与个
2015-03-08 21:59:52
362
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人