Android:扩展应用程序类。为什么我们需要实现单例模式?

维塔利

我想将我的数据库连接对象放到 Application 类中。我阅读了一些教程,到处都可以看到单例模式的显式实现。像这样的东西

public class MyApplication extends Application {
    private static MyApplication singleton;

    public static MyApplication getInstance(){
        return singleton;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        singleton = this;
    }
}

我的问题是为什么我需要做这个显式实现?没人解释。

我想在那里添加一些属性,初始化onCreate()并获取它在活动中的价值。

myProp = (MyApplication)getApplicationContext().getMyProperty()

真的有必要实现单例模式吗?

贝卢

Application类是一个接入点,以应用程序上下文,一般它被用作像你的数据库对象的所有应用程序范围内相关性的initializator。这个类每个应用程序只初始化一次,在内存中持续存在,直到应用程序不再在内存中。所以它是一个本地创建的单例。

通过对应用程序拥有这样的静态访问点,您可以访问任何类中的应用程序上下文,通常情况下,当您在自定义类中需要此类依赖项时,此上下文更适合检索资源、系统服务等,因为它没有t 持有指向活动和查看的链接,因此是防泄漏的当然,在您的示例中,您Activity可以访问应用程序,但无论如何您都必须转换上下文,并且最好对整个应用程序使用相同的方法。

尽管您可以将它用作所有应用程序范围和已初始化依赖项全局访问点,但不要使用巨大的初始化逻辑重载它,最好为此目的创建一些其他单例,并从Application类中对其进行初始化在一个大项目中考虑使用 DI 框架,Dagger是最好的一个,用于提供依赖项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果我们打算继续使用单页面应用程序,为什么我们需要Spring MVC或Struts框架

来自分类Dev

为什么我们需要安装 http 模块来运行我们的 node js 应用程序?

来自分类Dev

为什么我们需要拉动刷新移动应用程序?

来自分类Dev

为什么在开发React应用程序时我们需要绕过主机检查?

来自分类Dev

为什么我们需要部署流星应用程序而不是仅仅启动它?

来自分类Dev

为什么需要在我们的应用程序中刷新数据库视图?

来自分类Dev

为什么在开发React应用程序时我们需要绕过主机检查?

来自分类Dev

为什么我们需要部署流星应用程序而不是仅仅启动它?

来自分类Dev

为什么我扩展android.app.application的应用程序类无法正常工作?

来自分类Dev

为什么我们需要Avro模式演变

来自分类Dev

构建器模式:为什么我们需要.build()?

来自分类Dev

为什么我们在Android的短信管理器中使用应用程序上下文

来自分类Dev

我在哪里知道为什么限制我们在Facebook上的应用程序?

来自分类Dev

为什么我们需要Java中的Properties类?

来自分类Dev

Android应用程序类充当单例吗?

来自分类Dev

Android应用程序类充当单例吗?

来自分类Dev

为什么我们需要隐式应用

来自分类Dev

为什么我们仍然使用HTTP而不是WebSocket来构建Web应用程序?

来自分类Dev

为什么我们将Angular应用程序包装在函数中?

来自分类Dev

为什么我们不在NodeJS应用程序中使用“ express.use”?

来自分类Dev

为什么我们不能检查 react-native 应用程序的样式属性?

来自分类Dev

ReactJS:为什么我们在创建 React 应用程序时使用 nodeJs?

来自分类Dev

为什么我们需要在Android应用中存储Goefence数据?

来自分类Dev

为什么我们需要在Android应用中存储Goefence数据?

来自分类Dev

为什么我们需要在创建 azure 密钥保管库之前在 azure 活动目录中创建应用程序?

来自分类Dev

为什么我们的Android项目需要多个清单?

来自分类Dev

Java:为什么我们可以从非子类访问字段和方法时需要扩展类

来自分类Dev

为什么我们使用扩展?

来自分类Dev

流星-为什么我们需要单文件库的软件包?

Related 相关文章

  1. 1

    如果我们打算继续使用单页面应用程序,为什么我们需要Spring MVC或Struts框架

  2. 2

    为什么我们需要安装 http 模块来运行我们的 node js 应用程序?

  3. 3

    为什么我们需要拉动刷新移动应用程序?

  4. 4

    为什么在开发React应用程序时我们需要绕过主机检查?

  5. 5

    为什么我们需要部署流星应用程序而不是仅仅启动它?

  6. 6

    为什么需要在我们的应用程序中刷新数据库视图?

  7. 7

    为什么在开发React应用程序时我们需要绕过主机检查?

  8. 8

    为什么我们需要部署流星应用程序而不是仅仅启动它?

  9. 9

    为什么我扩展android.app.application的应用程序类无法正常工作?

  10. 10

    为什么我们需要Avro模式演变

  11. 11

    构建器模式:为什么我们需要.build()?

  12. 12

    为什么我们在Android的短信管理器中使用应用程序上下文

  13. 13

    我在哪里知道为什么限制我们在Facebook上的应用程序?

  14. 14

    为什么我们需要Java中的Properties类?

  15. 15

    Android应用程序类充当单例吗?

  16. 16

    Android应用程序类充当单例吗?

  17. 17

    为什么我们需要隐式应用

  18. 18

    为什么我们仍然使用HTTP而不是WebSocket来构建Web应用程序?

  19. 19

    为什么我们将Angular应用程序包装在函数中?

  20. 20

    为什么我们不在NodeJS应用程序中使用“ express.use”?

  21. 21

    为什么我们不能检查 react-native 应用程序的样式属性?

  22. 22

    ReactJS:为什么我们在创建 React 应用程序时使用 nodeJs?

  23. 23

    为什么我们需要在Android应用中存储Goefence数据?

  24. 24

    为什么我们需要在Android应用中存储Goefence数据?

  25. 25

    为什么我们需要在创建 azure 密钥保管库之前在 azure 活动目录中创建应用程序?

  26. 26

    为什么我们的Android项目需要多个清单?

  27. 27

    Java:为什么我们可以从非子类访问字段和方法时需要扩展类

  28. 28

    为什么我们使用扩展?

  29. 29

    流星-为什么我们需要单文件库的软件包?

热门标签

归档