自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Effective Java 第 24 条:消除非受检警告

用泛型编程时,会遇到许多编译器警告:非受检强制转化警告(unchecked cast warnings)、非受检方法调用警告、非受检普通数组创建警告、以及非受检转换警告(unchecked conversion warnings)。当你越来越熟悉泛型之后,遇到的警告也会越来越少,但是不要期待从一开始用泛型编写代码就可以正确地进行编译。  有许多非受检警告很容易清楚。例如,假设意外的编写了这样一

2013-08-09 18:35:56 3051

原创 Effective Java 第 23 条: 请不要在新代码中使用原生态类型

从jdk1.5版本开始,java就引入了泛型。在没有泛型之前,从集合中取出的对象都必须经过转型,才能够达到使用。在jdk1.5之前,如果往集合中插入了不同类型的对象的话,那么在遍历的时候就可能引起运行时转型失败。泛型定义:A class or interface whose declaration has one or more type parameters is a generic cla

2013-08-09 17:22:14 2555

原创 Effective Java 第 22 条:优先考虑静态成员类

嵌套类(nested class)是指被定义在另一个类的内部的类。嵌套类存在的目的应该是为它的外围类(enclosing class)提供服务。如果嵌套类将来可能会用于其他的某个环境中,它就应该是顶层类(top-level class)。嵌套类有四种:静态成员类(static member class)、非静态成员类(nonstatic member class)、匿名类(anonymous

2013-08-09 12:00:49 3246

原创 Effective Java 第 21 条: 用函数对象表示策略

有些语言支持函数指针(function pointer)、代理(delegate)、lambda表达式(lambda expression),或者支持类似的机制,允许程序把“调用特殊函数的能力”存储起来并传递这种能力。这种机制通常用于允许函数的调用者通过传入第二个函数,来指定自己的行为。Java没有提供函数指针,但是可以通过对象引用实现同样的功能。调用对象上的方法通常是执行该对

2013-08-08 23:51:03 3018

原创 Effective Java 第 20 条: 类层次优于标签类

有时候,可能会遇到带有两种甚至更多种风格的实例的类,并包含表示实例风格的标签(tag)域。例如,考虑下面这个类,它能够表示圆形或者矩形:

2013-08-08 15:21:44 2650

原创 Effective java 第 19 条: 接口只用于定义类型

当类实现接口时,接口就充当可以引用这个类的实例的类型(type)。因此,类实现了接口,就表名客户端可以对这个类的实例实施某些动作。为了任何其他目的的而定义的接口是不恰当的。有一种接口被称为常量接口(constant interface) ,它不满足上面的条件。这种接口没有包含任何方法,它只包含静态的final域,每个域都导出一个常量。使用这些常量的类实现这个接口,以避免用类名来修饰常量名。

2013-08-08 11:55:46 3198 1

原创 Effective Java 第 18 条:接口优于抽象类

Java程序设计语言提供了两种机制,可以用来定义允许多个实现的类型:接口和抽象类。这两种机制之间最明显的区别在于,抽象类允许包含某些方法的实现,接口则不允许。一个更为重要的区别在于,为了实现由抽象类定义的类型,类必须成为抽象类的一个子类。任何一个类,只要它定义了所有必要的方法,并且遵守通用约定,它就被允许实现一个接口,而不管这个类是处于类层次(class hierarchy)的哪个位置。因为Jav

2013-08-07 17:57:16 2632

原创 Effective Java 第17条:要么为了继承而设计,并提供文档说明,要么禁止继承

其实在 16 条中说过继承的缺点: 可能会导致子类很脆弱,如果超类用了自用模式并且没有提供相关的文档说明。 后期版本更新中,有可能导致子类实现的方法和超类中同名,从而成为覆盖父类方法。所以设计超类的时候需要注意这些实质性的规则:首先,该类的文档必须精确地描述覆盖每个方法所带来的影响。该类必须有文档说明其可改写的方法的自用性:对于每一个公有的或

2013-08-03 22:55:59 2672

原创 Effective Java 第16条 : 复合优先于继承

继承(指的是子类扩展超类,并不包含接口)是实现代码重用的有力手段,但它并不总是完成这项工作的最佳工具。不适当地使用继承会导致脆弱的软件。     与方法调用不同的是,继承打破了封装性。换句话说子类依赖于超类中特定功能的实现细节。超类的实现可能随着发行版本而变化,就有可能影响子类。因此,子类必须要跟着超类的更新而发展。除非超类是专门为扩展而设计的,并且具有很好的说明文档。

2013-08-03 15:36:52 2988

原创 Effective Java 第 15 条: 使可变性最小化

不可变类只是实例不能被修改的类。每个实例中包含的所有信息都必须在创建实例的时候就提供,并在对象的整个生命周期(lifetime)内固定不变。Java 平台类库中包含许多不可变的类,其中有String、基本类型包装类、BigInteger 和 BigDecimal。存在不可变的类有许多理由:不可变的类更加易于设计、实现和使用。他们不容易出错,且更加安全。

2013-08-02 12:12:45 2397

转载 Effective Java 第14条:在公有类中使用访问方法而非公有域

转载: http://yanfeichening.iteye.com/blog/1497657如果类可以在它所在包的外部进行访问,就提供访问方法。如果类是包私有的,或者私有的嵌套类,直接暴露它的数据域并没有本质的错误。总之,公有类永远都不应该暴露可变的域。虽然还是有几个问题,但是让公有类暴露不可变的域,危害比较小。但是,有时候需要会用到包级私有的或者私有的嵌套类

2013-08-01 18:01:25 2391

转载 Effective Java 第13条 : 使类和成员的可访问性最小化

转载地址: http://www.blogjava.net/kuuyee/archive/2013/06/14/400560.html软件设计的基本原则之一,就是系统要模块化,模块之间只通过他们的API进行通信,一个模块不需要知道其他模块的内部工作情况,这个概念称作信息隐藏(information hiding)或封装(encapsulation)。需要遵守的原则

2013-08-01 17:54:25 2460

转载 Effective Java 第8条:覆盖equals时要遵守通用约定

转载 : http://architecture3.riaos.com/?p=3092399覆盖equals方法貌似很简单,但是有许多覆盖方式会导致错误,所以们应该做到要么不覆盖equals方法,要么覆盖时就要遵守通用约定。一、什么情况下可以不覆盖equals方法如果不覆盖equals方法,那该类的每个实例都只与它自身相等,而有时候这就是我们需要的。1、类的每个实例

2013-07-31 23:27:39 2413

原创 Effective Java 第7条:避免使用终结函数

终结函数(finalizer)是不可预测的,通常也是很危险的,一般情况下是不必要的。使用终结函数会导致行为不稳定、降低性能,以及可移植性问题。当然,终结函数也有其可用之处,我们将在本条目的最后再做介绍;但是根据经验,应该避免使用终结函数。C++的程序员被告知"不要把终结函数当作是C++中析构器(destructors)的对应物"。在C++中,析构器是回收一个对象所占用资源的常规方法,是构造

2013-07-30 22:53:35 2530

原创 Effective Java 第6条:消除过期的对象引用

当你从手工管理内存的语言(比如C或C++)转换到具有垃圾回收功能的语言的时候,程序员的工作会变得更加容易,因为当你用完了对象之后,它们会被自动回收。当你第一次经历对象回收功能的时候,会觉得这简直有点不可思议。这很容易给你留下这样的印象,认为自己不再需要考虑内存管理的事情了。其实不然。考虑下面这个简单的栈实现的例子:// Can you spot the "memory leak"?

2013-07-30 22:29:44 2584

原创 Effective Java 第5条:避免创建不必要的对象

一般来说,最好是重用对象而不是在每次需要的时候就创建一个相同功能的新对象。重用方式既更加快速,也更为流行。如果对象是不可变的(immutable)(见第15条),它就始终可以被重用。作为一个极端的反面例子,考虑下面的语句:String s = new String("stringette"); // DON'T DO THIS!该语句每次被执行的时候都创建一个新的Str

2013-07-30 22:27:25 2472

原创 Effective Java 第4条:通过私有构造器强化不可实例化的能力

有时候,可能需要编写只包含静态方法和静态域的类。这些类的名声很不好,因为有些人滥用它们来避免从对象的角度进行思考,但是它们也确实有它们特有的用处。我们可以利用这种类,以java.lang.Math或者java.util.Arrays的方式,把基本类型的值或者数组类型上的相关方法组织起来。我们也可以通过java.util.Collections的方式,把实现特定接口的对象上的静态方法(包括工厂方法,

2013-07-28 22:57:59 2398

原创 EffectiveJava 第3条 :用私有构造器或者枚举类型强化Singleton属性

Singleton只不过是指仅仅实例化一次的类[Gamma95, p. 127]。Singleton通常被用来代表那些本质上唯一的系统组件,比如窗口管理器或者文件系统。使类成为Singleton会使它的客户端测试变得十分困难,因为无法给Singleton替换模拟实现,除非它实现一个充当其类型的接口。在Java 1.5发行版本之前,实现Singleton有两种方法。这两种方法都要把构造器保持

2013-07-28 17:37:05 2317

转载 EffectiveJava 第2条 :遇到多个构造器参数时要考虑用构建器(2)

转载地址: http://book.51cto.com/art/200901/106048.htm幸运的是,还有第三种替代方法,既能保证像telescoping constructor模式那样的安全性,也能保证像JavaBeans模式那么好的的可读性。这就是Builder模式[Gamma95,p.97]的一种形式。不直接生成想要的对象,而是让客户端利用所有必要的参数调用构造器(或者静态工厂),

2013-07-25 23:37:17 2366

转载 EffectiveJava 第2条 :遇到多个构造器参数时要考虑用构建器(1)

转载地址:静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数。考虑用一个类表示包装食品外面显示的营养成份标签。这些标签中有几个域是必需的:每份的含量、每罐的含量以及每份的卡路里,还有超过20个可选域:总脂肪量、饱和脂肪量、转化脂肪、胆固醇、钠等等。大多数产品都只有几个可选域中会有非零的值。对于这样的类,应该用哪种构造器或者静态方法来编写呢?程序员一向习惯采用te

2013-07-25 23:31:47 2402

转载 EffectiveJava 第1条 :创建和销毁对象--考虑用静态方法代替构造器

转载:http://www.cnblogs.com/forstudy/archive/2013/05/05/3061913.html当创建对象时,直接使用构造器是最自然不过的事情,但不妨考虑一下静态工厂方法。注:区别于设计模式中的工厂方法,它只是一个静态的方法而已;设计模式中的工厂方法通常包括商品和工厂两个组件,没那么复杂。 因为它可以为你带来以下构造器

2013-07-19 18:15:55 771

原创 android 使用MideaPlayer API来播放简单的应用

采用的Activity来播放音乐 Hello World, HomeActivity! 音乐播放器 音乐文件 播放 暂停 停止 重播<LinearLayout xmlns:android="http://schema

2011-07-09 08:12:08 1247

原创 android 使用服务来窃听电话,并且通过语音录制

服务--ServiceAndroid中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。服务的开发比较简单,如下:第一步:继承Service类public class SMSService ext

2011-07-06 22:00:55 1893 1

原创 android 广播接收者--BroadcastReceiver (实现短信窃听)

广播接收者--BroadcastReceiver广播接收者(BroadcastReceiver)用于接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()来实现的。通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收,这个特性跟JMS中的Topic消息接收者类似。要实现一

2011-07-03 07:26:20 3722

转载 Android ListView优化

 Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。想过没有? 在我们的列表有1000000项时会是什么样的?是不是会占用极大的系统资源?先看看下面的代码: public View getView(int position, View convertView, ViewGroup

2011-06-27 10:46:00 1611 1

原创 android的进程与线程

进程:在Android 中,进程完全是应用程序的实现细节,不是用户一般想象的那样。它们的用途很简单:

2011-06-27 10:00:00 788

原创 Android有效解决加载大图片时内存溢出的问题

尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source

2011-06-24 16:15:00 1526

原创 Android ExecutorService线程池

ExecutorService线程池ExecutorService 建立多线程的步骤: 1。定义线程类 class Handler implements Runnable{ } 2。建立ExecutorService线程池 ExecutorService executorService = Executors.newCachedThreadPool(); 或者 int cpuNums =

2011-06-23 12:13:00 9384 5

原创 android横竖屏总结

<br /><br />Android横竖屏要解决的问题应该就两个:一。布局问题;二。重新载入问题。<br />1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,他有以下几个参数:<br />"unspecified" <br />默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向. <br />"landscape"

2011-03-31 11:41:00 1150

原创 进度条(ProgressBar)

<br /> <br />下面详细介绍ProgressBar<br />一、说明<br />  在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度。一个进度条也可不确定其进度。在不确定模式下,进度条显示循环动画。这种模式常用于应用程序使用任务的长度是未知的。<br />二、XML重要属性<br />    android:progressBarStyle:默认进度条样式<br />    android:progressBarStyl

2011-03-11 12:15:00 1660 1

转载 Android中application 全局变量

<br />android编程中,application这样的名词似乎变得那样的不常见,而让大家更为熟悉的是activity、intent、provider、broadcast和service。但其实android中的application也有着它自身的用处。打开manifest文件,会看到有一个application配置标签,这就是有关application的使用了。<br /><br />                就是说application是用来保存全局变量的,并且是在package创建的时候就

2011-03-09 10:46:00 2050 1

转载 android基础进度条原理

<br /><br /> <br />一、说明<br />  在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度。一个进度条也可不确定其进度。在不确定模式下,进度条显示循环动画。这种模式常用于应用程序使用任务的长度是未知的。<br />二、XML重要属性<br />    android:progressBarStyle:默认进度条样式<br />    android:progressBarStyleHorizontal:水平样式<

2011-03-09 10:09:00 1286

转载 Android线程

<br /> <br />1. Android进程<br /> <br />在了解Android线程之前得先了解一下Android的进程。当一个程序第一次启动的时候,Android会启动一个LINUX进程和一个主线程。默认的情况下,所有该程序的组件都将在该进程和线程中运行。<br />同时,Android会为每个应用程序分配一个单独的LINUX用户。Android会尽量保留一个正在运行进程,只在内存资源出现不足时,Android会尝试停止一些进程从而释放足够的资源给其他新的进程使用, 也能保证用户正在访问的

2011-03-07 11:22:00 784

原创 如何创建QuickAction在Android对话 类似于苹果的效果

<br />官方 Twitter的 Android应用程序的不断推出新 的Android的UI功能和行为模式 ,如仪表板,搜索栏,QuickAction和行动吧。 一个有趣的模式是 QuickActions 显示在上下文行动 列表视图 。 这种模式实际上已经存在于 QuickContact 对话框/默认酒吧 跟 应用程序(因为机器人2.0)。<br /> <br />    <br /> <br /><br />该 QuickActions 对话框不包含在标准的 Android SDK的 ,所以我们必须手动

2011-03-04 15:47:00 3505 3

原创 Android 通过Get方式提交参数给Web应用

  HTTP协议发送数据:小于2K的数据 可以通过GET方式。  当然传送中文参数会出现乱码     服务端要和客户端要统一编码就行! 主要代码贴一下吧:package com.zyq.service;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map;import java.util

2011-01-24 11:49:00 1580

原创 Android 从web应用获取json格式的视频资讯并列表显示在屏幕上

<br /> <br /> <br />  //JSON数据格式/*[{id:1,title:"实拍奥巴马国宴秀中国谚语 主菜烤牛排",timelength:90}, {id:1,title:"实拍奥巴马国宴秀中国谚语 主菜烤牛排",timelength:90}, {id:1,title:"实拍奥巴马国宴秀中国谚语 主菜烤牛排",timelength:90}, {id:1,title:"实拍奥巴马国宴秀中国谚语 主菜烤牛排",timelength:90}, {id:1,title:"

2011-01-21 18:02:00 2033

原创 Android 从web应用获取xml格式的视频资讯并列表显示在屏幕上

就贴一下主要代码吧 ~package com.zyq.service;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import android.util.Xml;import cn.zyq.v

2011-01-21 16:17:00 2397 1

原创 Android 从Internet获取数据 实现获取一张图片

<br />l从Internet获取数据利用HttpURLConnection对象,我们可以从网络中获取文件数据.<br />URL url = new URL("http://photocdn.sohu.com/20100125/Img269812337.jpg");HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(5* 1000);conn.setRequestMe

2011-01-20 16:59:00 2173 2

原创 Android 之往通讯录中添加数据和查询数据

 首先 我们要在E:/android-sdk-windows/platforms/android-8/sources/ContactsProvider  找到源码 ! 因为android自带的通讯录也是通过ContentProvider对外共享数据。 贴点源码: URI  这是ContactsProvider2.javastatic { // Contacts URI matching table final UriMatcher matcher = sUriMatche

2011-01-20 11:39:00 9516 3

原创 Android 监听ContentProvider中数据的变化

如果ContentProvider的访问者需要知道ContentProvider中的数据发生了变化,可以在ContentProvider 发生数据变化时调用getContentResolver().notifyChange(uri, null)来通知注册在此URI上的访问者,例子如下:public class PersonContentProvider extends ContentProvider {public Uri insert(Uri uri, ContentValues values)

2011-01-19 11:31:00 6358

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