回顾这篇文章列举了使用单例的几个问题 并看过使用单例模式的Android应用程序的几个例子,我想知道使用Singletons而不是通过全局应用程序状态共享的单个实例是一个好主意(继承android.os.Application并获取它通过context.getApplication()).
两种机制都有哪些优点/缺点?
说实话,我希望在这篇文章中使用Web应用程序的单例模式得到相同的答案,不是一个好主意!但适用于Android.我对么?DalvikVM有什么不同呢?
编辑:我想对涉及的几个方面有意见:
我经常发现自己需要访问需要引用某些活动的方法.例如,要使用getWindowManager,我需要访问一些Activity.但是,我使用这些方法的代码通常在其他一些没有引用活动的类中.到目前为止,我已经存储了对主要活动的引用,或者将某些活动的上下文传递给了该类.有没有更好的方法来做到这一点?
有没有办法为Android应用程序定义类似"会话"的东西?
我有一个启动多个活动的应用程序和应用程序从活动到活动等的用户
.当然可以切换到另一个应用程序,接听电话,停止使用该应用程序,因为他很忙,所以应用程序在后台等.
是否有一种简单而有意义的方法可以在所有这些不同情况下定义类似单个会话的内容?这样我们可以判断新会话何时开始并可能为每个会话存储一些数据?
通常在 Android 代码中,我们使用这种模式将数据存储在 Application 对象中,然后通过转换访问它,如下所示:
((MyApplicationObject)getApplication()).getDaggerComponent()
Run Code Online (Sandbox Code Playgroud)
getApplication()应该总是MyApplicationObject因为我已经在AndroidManifest.xml. 但是,当您部署此代码时,有时它会导致 aClassCastException而我们得到一个不同的对象。
怎么会这样?
此问题的正确解决方法是什么?