Создать только 1 экземпляр обработчика во всем приложении - PullRequest
0 голосов
/ 30 апреля 2018

Я создал Handler() в своем методе onCreate моего MainActivity для запуска некоторого кода, поэтому, очевидно, каждый раз, когда вызывается 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 раз.

1 Ответ

0 голосов
/ 30 апреля 2018

Вы можете расширить свой класс Application, чтобы у вас был только один держатель, вы также можете сделать его static.

Чтобы продлить заявку: 1. Создать приложение класса public class App extends Application 2. В вашем manifest под application теге установлено name=".App"

Существует onCreate метод, который можно использовать для этой цели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...