我已经为这个问题苦苦挣扎了很长一段时间,实际上我在 stackoverflow 上查了很多帖子,都讨论了同样的问题,但没有明确的答案。
如何实现单例模式来实现Android Activity之间的数据共享? 我是在 Activity 之间谈论,而不是在类里面谈论,哪一个是正确的方式?
这是我找到的所有信息:
1-那些推荐标准 Singleton 形式的人,您可以用 Java、C 等实现的形式,这里有一个示例:
http://es.wikipedia.org/wiki/Singleton
2- 建议在 OnCreate 方法中实现它,如下所示:
http://androidcookbook.com/Recipe.seam?recipeId=1218
3-使用应用程序实现方法的那些(对此不太确定):
Is it acceptable practice to use Singleton Objects to save state or share data between Activities?
4- 使用“singleTask”方法的方法,在 list 中定义它:
http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
5-还有更多像这样的通俗方式(实际上我认为这不是单例):
建议?评论?例子?
Google Android 人员推荐它作为在 Activity 之间共享复杂信息的一种方式,但不知道 Android 中的最佳方法。
http://developer.android.com/guide/faq/framework.html#3
请帮我澄清一下。
最佳答案
我使用应用程序来保存“单例”实例以及静态最终变量。在我工作的框架中,Transfuse ,单例通过 @Singleton 注释确定作用域。这些将给定的单例保存在静态最终映射中:
@Singleton
public class SingletonExample{
...
}
http://androidtransfuse.org/documentation.html#singleton
这是保存给定单例实例的映射:
public class ConcurrentDoubleLockingScope implements Scope {
private final ConcurrentMap<Class, Object> singletonMap = new ConcurrentHashMap<Class, Object>();
@Override
public <T> T getScopedObject(Class<T> clazz, Provider<T> provider) {
Object result = singletonMap.get(clazz);
if (result == null) {
Object value = provider.get();
result = singletonMap.putIfAbsent(clazz, value);
if (result == null) {
result = value;
}
}
return (T) result;
}
}
关于android - 在Android中实现Singleton以便在 Activity 之间共享数据的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15164144/