首页 > 解决方案 > 在整个应用程序中仅创建 1 个处理程序实例

问题描述

我在Handler()MainActivity 的 onCreate 方法中创建了一个来运行一些代码,因此显然每次调用 onCreate 时,都会创建我的处理程序的一个新实例。当用户离开 MainActivity 然后返回到它时,会创建一个新的处理程序。

handler.postDelayed(object : Runnable {
        override fun run() {
            try {
                player.money += player.cps
                player.moneyEarned += player.cps
                updateText()
                save()
            } catch (e: Exception) {
                println("ERROR")
            }
            handler.postDelayed(this, 1000)
        }
    }, 0)

如何在导航回我的 MainActivity 时不创建新的处理程序?或者以某种方式让这个处理程序在全局应用程序级别运行,这意味着只会创建它的一个实例?

信息:创建太多这些处理程序导致我的应用程序滞后,然后崩溃。我猜太多的读写和计算操作。我在离开 MainActivity 50 多次后发现了这一点。

标签: androidkotlin

解决方案


您可以扩展您的Application课程,因此您将只有一个持有者,您也可以制作它static

为了扩展应用程序: 1. 创建 App 类public class App extends Application 2. 在您manifestapplication标签集下name=".App"

onCreate可以用于该目的的方法


推荐阅读