欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

Android RoboGuice使用指南(11):Scopes

来源: 开发者 投稿于  被查看 738 次 评论:65

Android RoboGuice使用指南(11):Scopes


缺省情况下,Guice每次都创建类的一个新的实例对象给需要该类实例的地方。可以使用Scopes来修改这个缺省行为,Scope允许在一定范围内重用类实例。Roboguice中常用的有两种:

@Singleton 整个Application生命周期中使用同一实例对象
@ContextScoped 同一个Context(如Activity)中共享某一实例对象。
使用Scope 的方法为使用相应的标记,如:

[java] @Singleton 
public class InMemoryTransactionLog implements TransactionLog { 
 // everything here should be threadsafe!  
 } 
@Singleton
public class InMemoryTransactionLog implements TransactionLog {
 // everything here should be threadsafe!
 }

或者在Module中使用bind 语句:

[java]bind(TransactionLog.class) 
 .to(InMemoryTransactionLog.class) 
 .in(Singleton.class); 
bind(TransactionLog.class)
 .to(InMemoryTransactionLog.class)
 .in(Singleton.class);

如果使用@Provides,可以有:

[java]@Provides @Singleton 
TransactionLog provideTransactionLog() { 
... 

@Provides @Singleton
TransactionLog provideTransactionLog() {
...
}

如果某个类型使用某个你不想使用的Scope标记,可以将其绑定到Scopes.NO_SCOPE取消这个Scope定义。

 

摘自 引路蜂移动软件

相关文章

    暂无相关文章

用户评论