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()