WakefulIntentService и Тост - PullRequest
       8

WakefulIntentService и Тост

0 голосов
/ 08 марта 2012

Полагаю, это вопрос прямо к Марку, но я не могу на всю жизнь получить уведомление Toast для работы из метода doWakefulWork WakefulIntentService. Он работает с onCreate, но мне нужно использовать некоторые данные, которые я получаю через намерение в сообщении тоста.

Я пытался создать экземпляр обработчика из OnCreate, но, похоже, это ничего не делает. Я перепробовал все, что мог придумать. Тост, похоже, не работает в главном потоке. Любая помощь?

Ответы [ 2 ]

0 голосов
/ 08 марта 2012

Как правило, WakefulIntentService не предназначен для сценариев, в которых Toast имеет какой-либо смысл, поскольку пользователь может или не может быть рядом.Более того, сервисы не должны напрямую влиять на пользовательский интерфейс, так как если пользователь равен вокруг пользователя, он может не оценить ваши Toast в середине их игры, их навигации, фильма и т. Д. IВы предпочитаете использовать что-то другое (например, упорядоченную трансляцию для обновления активности переднего плана или отображения Notification, если такой активности нет).

Если вы действительно уверены, что хотите использовать Toastиз службы ваша проблема не должна иметь ничего общего с WakefulIntentService - у вас будут те же проблемы с обычным IntentService. На этот вопрос SO есть несколько ответов, демонстрирующих использование Toast из фонового потока службы с использованием Handler, что может помочь указать, где ваша реализация Handler работает неправильно.

0 голосов
/ 08 марта 2012
       private boolean showToast = false;
        ...
        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (showToast) {
             Toast.makeText(this,"YourText",Toast.LENGTH_LONG).show();
             showToast = false;
        }
        }

Просто установите showToast = true; из любого места, чтобы показывать вам тост-уведомление.

...