Хорошо, я тоже пытаюсь отменить Toast и, похоже, не могу получить вызов cancel () для вызова в Activity.onDestroy () или Activity.onStop () и т. Д. После некоторого API-документальное чтение и поиск в Google других, нуждающихся в помощи для отмены тостов, я думаю, что до сих пор не ясно, когда деятельность будет остановлена, приостановлена, уничтожена.Мне нужен безошибочный способ заставить мою деятельность приостановиться или остановиться.
В моем конкретном случае, поскольку есть только короткие и длинные тосты, я решил повторить цикл 5 раз, выполняя шоу () длинного тоста, поэтому он будет отображаться на экране в течение 15-20 секунд.Это прекрасно работает!
Но недостатком (отрицательным побочным эффектом) использования объекта Toast является то, что они сохраняются даже ПОСЛЕ того, как пользователь покидает ваше приложение и возвращается на домашний экран и начинает использовать какое-то другое приложение... твой тост будет жить в течение следующих 15-20 секунд, если вы не можете гарантировать, что сможете найти какое-то место (каким-либо образом) для вызова функции отмены ().Кроме того, вы должны верить, что Android выполнит ваш звонок на метод cancel ()!
Итак, для этого я настраивал свой простой цикл, пытался вызывать отмены прямо в цикле и доказывал себеон выполнит вызов отмены и будет вести себя как положено.
Фрагмент кода: Примечание: 'toast' является публичной переменной INSTANCE, поэтому у нас есть только ОДИН экземпляр объекта Toast [как рекомендовано выше, и который, как подтвердил комментатор, работал два года назад, в ActivityonStop () и OnDestroy ()]
toast = Toast.makeText(ctxt, result, Toast.LENGTH_LONG);
for (int i=0; i < 5; i++)
{
// Long-toasts each last about 3.5 secs
toast.show();
android.os.SystemClock.sleep(1500);
toast.cancel();
android.os.SystemClock.sleep(1500);
toast = Toast.makeText(ctxt, result, Toast.LENGTH_LONG);
}
Хорошо, исходный цикл содержал только одну строку, делающую шоу.Это само по себе работает.
Но чтобы поэкспериментировать, я добавил следующие четыре строки, чтобы поспать около половины пути до показа в 3,5 секунды, затем отменил его, снова поспал в течение секунд с половиной, а затемвоссоздайте и снова покажите тост.
Я ожидал увидеть тост в течение примерно 1,5 секунд, затем увидеть, как он исчезает, и вернуться через 1,5 секунды и т. д.
Угадайте, что... тост никогда не появляется ВСЕ!
Хорошо, я нахожусь в полном бормотании ... что мне не хватает, в понимании внутренних загадок того, как класс Toast реализован и являетсядолжен вести себя?
И, возвращаясь к моей первой проблеме: как лучше перевести мою активность в состояние паузы или остановки?
[Примечание: Я ЧИТАЮ этот форум МНОГО ...это великолепно !!!Это моя первая публикация в середине обсуждения темы ... Извините, что мой ответ помечается как ОТВЕТ, а не как ВОПРОС, относящийся к теме этой темы.]