final Handler handler = new Handler();
LOG.d("delay");
handler.postDelayed(new Runnable() {
@Override public void run() {
LOG.d("notify!");
//calling some methods here
}
}, 2000);
«Задержка» показывает в журнале, но не другие. И метод, вызванный в run()
, также не называется. Кто-нибудь может объяснить, почему это происходит, я делаю что-то неправильно?handler.postDelayed не работает в onHandleIntent метод IntentService
Класс, который имеет этот код, расширяет IntentService, будет ли это проблемой?
============================
UPDATE: я ставлю этот код в класс, расширяющий IntentService
. Единственное место, где я нашел, это было в конструкторе. Но мне нужно положить его в метод onHandleIntent
. Поэтому я проверил документацию для onHandleIntent
и он сказал:
Этот метод вызывается на рабочем потоке с просьбой process.Only один Intent обрабатывается в то время, но обработка происходит на рабочем потоке, который работает независимо от другой прикладной логики. Таким образом, если этот код занимает много времени, он будет задерживать другие запросы к одному и тому же IntentService, но он ничего не задержит. Когда все запросы обрабатываются, IntentService останавливается, поэтому вы не должны называть stopSelf.
Так что, основываясь на полученном результате, я чувствую, что не могу использовать postDelayed
в «рабочей нить». Но может ли кто-нибудь объяснить это немного больше, например, почему это не работает в рабочем потоке? Заранее спасибо.
является импорт из 'os.Handler'? –
@NJ да есть. android.os.Handler – Zip
Где вы это называете? Нужен контекст. – Nathanael