大高静流,女儿丸,渝西之窗党建新农村建设
今天在研究activitymanagernative的时候看到一段代码:
private static final singleton gdefault = new singleton() { protected iactivitymanager create() { ibinder b = servicemanager.getservice("activity"); if (false) { log.v("activitymanager", "default service binder = " + b); } iactivitymanager am = asinterface(b); if (false) { log.v("activitymanager", "default service = " + am); } return am; } };
该类是位于”android.util.singleton”中,遂在该目录下找到该文件。打开下,发现代码其实很简单
package android.util; /** * singleton helper class for lazily initialization. * * modeled after frameworks/base/include/utils/singleton.h * * @hide */ public abstract class singleton { private t minstance; protected abstract t create(); public final t get() { synchronized (this) { if (minstance == null) { minstance = create(); } return minstance; } } }
使用:
// 以匿名内部类的方式发布出去,注意这里是有static final修饰的 private static final singleton gdefault = new singleton() { protected iactivitymanager create() { ibinder b = servicemanager.getservice("activity"); if (false) { log.v("activitymanager", "default service binder = " + b); } iactivitymanager am = asinterface(b); if (false) { log.v("activitymanager", "default service = " + am); } return am; } }; /** * retrieve the system's default/global activity manager. */ static public iactivitymanager getdefault() { return gdefault.get(); }
该类主要利用的是泛型,再结合懒加载的方式来实现的。注意到该类是被隐藏的,所以开发者其实是不能使用到这个的。当然我们可以自己拷贝一个出去,用于我们的项目,以便提高封装。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android apk 项目一键打包并上传到蒲公英的实现方法
Android 自定义LineLayout实现满屏任意拖动功能的示例代码
android 限制某个操作每天只能操作指定的次数(示例代码详解)
Android 集成 google 登录并获取性别等隐私信息的实现代码
网友评论