Android 应用程序类使用场景
我是Android新手,在应用程序类和单例类之间有点混淆。据我所知,在应用程序或单例类中存储/维护全局值是不安全的,因为内存不足异常。因此,除了使用持久性存储,还有其他解决方案吗,在哪些情况下应用程序类有用?我非常推荐Singleton。如果您有需要上下文的单例,请:Android 应用程序类使用场景,android,Android,我是Android新手,在应用程序类和单例类之间有点混淆。据我所知,在应用程序或单例类中存储/维护全局值是不安全的,因为内存不足异常。因此,除了使用持久性存储,还有其他解决方案吗,在哪些情况下应用程序类有用?我非常推荐Singleton。如果您有需要上下文的单例,请: MySingleton.getInstance(Context c) { // // ... needing to create ... sInstance = new MySingleton(c.getA
MySingleton.getInstance(Context c) {
//
// ... needing to create ...
sInstance = new MySingleton(c.getApplicationContext());
}
我更喜欢单例而不是应用程序,因为它有助于使应用程序更具组织性和模块化,而不是在一个地方维护整个应用程序的所有全局状态,每个单独的部分都可以自行处理。还有一个事实,即Singleton(在请求时)延迟初始化,而不是引导您在Application.onCreate()中提前完成所有初始化,这是很好的
使用单例没有本质上的错误。只要在有意义的时候正确地使用它们。Android框架实际上有很多这样的功能,它可以维护每个进程的已加载资源缓存以及其他类似的功能
对于简单的应用程序,多线程不会成为单例的问题,因为从设计上讲,对应用程序的所有标准回调都是在进程的主线程上调度的,所以除非您通过线程显式引入多线程,或者通过将内容提供商或服务IBinder发布到其他进程隐式引入多线程,否则不会发生多线程。参考首选单线程而非应用程序,一个测试是使用一个带有setter和getter的变量,在一个活动中设置,在其他活动中设置,然后回家,在一些应用程序中洗牌,然后返回到您的应用程序,如果您使用了应用程序,那么您会得到null值,但在Singleton中,您可能不会得到null