android - 在整个应用程序中仅创建 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 多次后发现了这一点。
解决方案
您可以扩展您的Application
课程,因此您将只有一个持有者,您也可以制作它static
。
为了扩展应用程序: 1. 创建 App 类public class App extends Application
2. 在您manifest
的application
标签集下name=".App"
有onCreate
可以用于该目的的方法
推荐阅读
- javascript - JSON 长度给出不正确的值
- ios - 如何在 iOS 中全屏显示 Twilio 视频视图
- java - 如何从事件中获取数据到主函数?
- r - 如何在 R 中指定嵌套的 for 循环,它将对多个行块重复相同的操作
- java - 相当于 Google Ads API 中的 AD_PERFORMANCE_REPORT?
- python - Deeppavlov 内存使用情况
- ssis - 高级编辑器 SSPIS:我可以设置一次忽略多列上的截断错误,而不是一一忽略吗?
- css - 如何使用anime.js绘制虚线svg路径?
- flutter - 如何查看项目的flutter版本
- python - 在 SQLAlchemy 和 PostgreSQL 中存储 32 字节的 `bytes` 对象