Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序类使用场景_Android - Fatal编程技术网

Android 应用程序类使用场景

Android 应用程序类使用场景,android,Android,我是Android新手,在应用程序类和单例类之间有点混淆。据我所知,在应用程序或单例类中存储/维护全局值是不安全的,因为内存不足异常。因此,除了使用持久性存储,还有其他解决方案吗,在哪些情况下应用程序类有用?我非常推荐Singleton。如果您有需要上下文的单例,请: MySingleton.getInstance(Context c) { // // ... needing to create ... sInstance = new MySingleton(c.getA

我是Android新手,在应用程序类和单例类之间有点混淆。据我所知,在应用程序或单例类中存储/维护全局值是不安全的,因为内存不足异常。因此,除了使用持久性存储,还有其他解决方案吗,在哪些情况下应用程序类有用?

我非常推荐Singleton。如果您有需要上下文的单例,请:

MySingleton.getInstance(Context c) {
    //
    // ... needing to create ...
    sInstance = new MySingleton(c.getApplicationContext());
}
我更喜欢单例而不是应用程序,因为它有助于使应用程序更具组织性和模块化,而不是在一个地方维护整个应用程序的所有全局状态,每个单独的部分都可以自行处理。还有一个事实,即Singleton(在请求时)延迟初始化,而不是引导您在Application.onCreate()中提前完成所有初始化,这是很好的

使用单例没有本质上的错误。只要在有意义的时候正确地使用它们。Android框架实际上有很多这样的功能,它可以维护每个进程的已加载资源缓存以及其他类似的功能


对于简单的应用程序,多线程不会成为单例的问题,因为从设计上讲,对应用程序的所有标准回调都是在进程的主线程上调度的,所以除非您通过线程显式引入多线程,或者通过将内容提供商或服务IBinder发布到其他进程隐式引入多线程,否则不会发生多线程。

参考首选单线程而非应用程序,一个测试是使用一个带有setter和getter的变量,在一个活动中设置,在其他活动中设置,然后回家,在一些应用程序中洗牌,然后返回到您的应用程序,如果您使用了应用程序,那么您会得到null值,但在Singleton中,您可能不会得到null