android全局单例,Android单例与全局上下文

编辑/改进答案:

因为这个答案有点流行,我将改进我自己的答案与我最近使用的示例代码(截至2014年7月)。

首先让应用程序保持对自身的引用。

public class App extends Application {

private static App instance;

public static App get() { return instance; }

@Override

public void onCreate() {

super.onCreate();

instance = this;

}

}

然后对任何需要访问上下文的单例我懒加载单线程在线程安全的方式使用双检查同步,这里解释http://stackoverflow.com/a/11165926/906362

private static SingletonDemo instance;

public static SingletonDemo get() {

if(instance == null) instance = getSync();

return instance;

}

private static synchronized SingletonDemo getSync() {

if(instance == null) instance = new SingletonDemo();

return instance;

}

private SingletonDemo(){

// here you can directly access the Application context calling

App.get();

}

原答案:

public class SingletonDemo {

private static SingletonDemo instance = null;

private SingletonDemo() { }

public static SingletonDemo getInstance() {

if (instance == null) {

instance = new SingletonDemo ();

}

return instance;

}

}

并在其中包括一个这样的方法:

private Context context;

init(Context context){

this.context = context.getApplicationContext();

}

并记住调用这个来初始化单例。

应用程序方法和Singleton方法之间的区别以及为什么Singleton更好的是在文档上以更模块化的方式具有相同的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值