Kotlin Singleton应用程序类

johnny_crq

因此,在android中,我想使我的应用程序类为单例。

使它像这样:

object MyApplication: Application(){}

将无法正常工作。在运行时抛出以下错误:

java.lang.IllegalAccessException: private com....is not accessible from class android.app.Instrumentation.

这样做也是不可能的:

class MyApp: Application() {

    private val instance_: MyApp

    init{
        instance_ = this
    }

    override fun onCreate() {
        super.onCreate()
        if (BuildConfig.DEBUG) {
            Timber.plant(Timber.DebugTree());
        }
    }

    companion object{
        fun getInstance() = instance_         
    }
}

因此,如何在我的应用程序中的任何地方获取我的应用程序类的实例,我想使用MyApp.instance()而不是(applicationContext as MyApp)

也是我为什么要这样做的一个解释:我的应用程序中有类,例如,用上下文初始化的SharedPreference Singleton,并且作为单例,不能有参数。

硝酸

如果要使用它来访问某些静态属性,则可以在其中使用:您将只有一个Application实例,因此只需使用为该类指定的名称即可。不必担心它不是实际的单例,可以按相同的方式使用它。

例子:

class MyApp : Application() {

    companion object {
        const val CONSTANT = 12
        lateinit var typeface: Typeface
    }

    override fun onCreate() {
        super.onCreate()
        typeface = Typeface.createFromAsset(assets, "fonts/myFont.ttf")
    }

}

然后,您可以在应用程序中的任何位置使用MyApp.CONSTANTMyApp.typeface

--

如果要使用它作为应用程序上下文,则可以为Context创建扩展属性:

val Context.myApp: MyApp
        get() = applicationContext as MyApp

然后,您可以myApp在有上下文的任何地方使用来获取应用程序上下文。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用Kotlin编写javascript应用程序

来自分类Dev

Kotlin URL()。readText()使应用程序崩溃

来自分类Dev

适配器类中的 OnClickListener 按钮使 Kotlin 中的应用程序崩溃

来自分类Dev

在 Android 应用程序的改造实现中访问 kotlin 类自动生成的 getter 方法

来自分类Dev

从(现有的)Kotlin 程序启动 TornadoFX 应用程序

来自分类Dev

Kotlin Volley - 从另一个类访问 volley 时应用程序崩溃并出错

来自分类Dev

用Kotlin编写的Android Native应用程序和React Native应用程序

来自分类Dev

Kotlin崩溃的应用程序问题SetOnCreate方法

来自分类Dev

如何实现Firebase Google Sign to Kotlin应用程序

来自分类Dev

Kotlin:应用程序未向用户询问权限

来自分类Dev

webview返回而不关闭应用程序(kotlin)

来自分类Dev

Kotlin JavaScript:捆绑在React应用程序中使用

来自分类Dev

Kotlin android应用程序ExampleInstrumentedTest无法正常工作

来自分类Dev

Kotlin-findViewById启动后立即关闭应用程序

来自分类Dev

服务在Kotlin Multiplatform应用程序中不起作用

来自分类Dev

使用Kotlin的Android应用程序中的静态方法

来自分类Dev

如何将 Kotlin 应用程序部署到 Heroku?

来自分类Dev

在 Java Android 应用程序中使用 Kotlin 代码

来自分类Dev

电子邮件是从崩溃的应用程序 (KOTLIN) 发送的

来自分类Dev

Kotlin Android - 更改应用程序启动背景颜色

来自分类Dev

为什么我在“zxing”应用程序“Kotlin”上启动“OnPause”后我的应用程序退出

来自分类Dev

Android Studio (Kotlin) - 每次关闭应用程序时,用户都必须重新登录应用程序

来自分类Dev

Gradle的Kotlin DSL脚本无法启动Quarkus应用程序

来自分类Dev

比较Kotlin在android应用程序中的布局背景色

来自分类Dev

Kotlin应用程序,单击按钮以打开新活动-> IllegalStateException:findViewById不能为null

来自分类Dev

Kotlin应用程序中的“地理位置”按钮不可用

来自分类Dev

我们可以使用Kotlin构建全栈Web应用程序吗?

来自分类Dev

将Kotlin android智能投射到'BottomSheetBehavior应用程序崩溃

来自分类Dev

如何在应用程序Android Kotlin中打开WebView链接

Related 相关文章

  1. 1

    用Kotlin编写javascript应用程序

  2. 2

    Kotlin URL()。readText()使应用程序崩溃

  3. 3

    适配器类中的 OnClickListener 按钮使 Kotlin 中的应用程序崩溃

  4. 4

    在 Android 应用程序的改造实现中访问 kotlin 类自动生成的 getter 方法

  5. 5

    从(现有的)Kotlin 程序启动 TornadoFX 应用程序

  6. 6

    Kotlin Volley - 从另一个类访问 volley 时应用程序崩溃并出错

  7. 7

    用Kotlin编写的Android Native应用程序和React Native应用程序

  8. 8

    Kotlin崩溃的应用程序问题SetOnCreate方法

  9. 9

    如何实现Firebase Google Sign to Kotlin应用程序

  10. 10

    Kotlin:应用程序未向用户询问权限

  11. 11

    webview返回而不关闭应用程序(kotlin)

  12. 12

    Kotlin JavaScript:捆绑在React应用程序中使用

  13. 13

    Kotlin android应用程序ExampleInstrumentedTest无法正常工作

  14. 14

    Kotlin-findViewById启动后立即关闭应用程序

  15. 15

    服务在Kotlin Multiplatform应用程序中不起作用

  16. 16

    使用Kotlin的Android应用程序中的静态方法

  17. 17

    如何将 Kotlin 应用程序部署到 Heroku?

  18. 18

    在 Java Android 应用程序中使用 Kotlin 代码

  19. 19

    电子邮件是从崩溃的应用程序 (KOTLIN) 发送的

  20. 20

    Kotlin Android - 更改应用程序启动背景颜色

  21. 21

    为什么我在“zxing”应用程序“Kotlin”上启动“OnPause”后我的应用程序退出

  22. 22

    Android Studio (Kotlin) - 每次关闭应用程序时,用户都必须重新登录应用程序

  23. 23

    Gradle的Kotlin DSL脚本无法启动Quarkus应用程序

  24. 24

    比较Kotlin在android应用程序中的布局背景色

  25. 25

    Kotlin应用程序,单击按钮以打开新活动-> IllegalStateException:findViewById不能为null

  26. 26

    Kotlin应用程序中的“地理位置”按钮不可用

  27. 27

    我们可以使用Kotlin构建全栈Web应用程序吗?

  28. 28

    将Kotlin android智能投射到'BottomSheetBehavior应用程序崩溃

  29. 29

    如何在应用程序Android Kotlin中打开WebView链接

热门标签

归档