6.24

Handler


Handler是Android SDK用来处理异步消息的核心类。

子线程与主线程通过Handler来进行通信,子线程可以通过Handler来通知主线程进行UI更新。


使用Handler的三步:

1.创建Handler

2.从子线程中发出消息

3.在handler中捕获所需消息,实现响应


Handler怎么使用?

1.handler.post()

2.handler.post()

3.handler.sendMessage()

4.handler.sendEmptyMessage()

5.handler.removeCallback(runnable)


单例模式

单例模式是一种设计模式,解决了一个全局使用的类频繁地创建与销毁。

单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。

这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

当需要控制实例数目,节省系统资源的时候使用。

构造函数应为private


优点:

1.在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例。

2.避免对资源的多重占用。


缺点:

1.没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。


注意:

1.单例类只能有一个实例

2.单例类必须自己创建自己的唯一实例

3.单例类必须给所有其他对象提供这一实例

4.getInstance()方法中需要使用同步锁synchronize防止多线程同时进入造成instance被多次实例化


实现方式:

1.懒汉模式(线程不安全):不支持多线程。

2.懒汉模式(线程安全):支持多线程,效率很低,大多数情况下不需要同步。

必须加锁synchronize才能保证单例,但加锁会影响效率。getInstance()的性能对应用程序不是很关键。

3.饿汉模式:支持多线程,安全。没有加锁,执行效率会提高。类加载时就初始化,浪费内存。

4.双重校验锁:支持多线程,安全,高性能,getInstance()的性能很关键。

5.登记式/静态内部类:支持多线程,安全。只适用于静态域的情况

6.枚举:支持多线程,安全。最佳方法,自动支持序列化机制,绝对防止多次实例化。


实例化

在面向对象的编程中,通常把用类创建对象的过程称为实例化。

格式:类名 对象名 = new 类名(参数)  例:Date date = new Date()

你可能感兴趣的:(6.24)