Intereting Posts
Пролистать отфильтрованные изображения для Android Android: Когда экранная клавиатура появляется и исчезает, есть ли какие-либо прослушиватели, которые автоматически вызываются? Как изменить цвет гиперссылки textview? Использование ip-адреса для общего имени в сертификате сервера не работает в Android? Как я могу заставить Mockito работать в androidTest Как настроить имя файла APK для ароматов продукта? Разработка Android – любой пример Google + SDK или кода? Robolectric с использованием фрагментов и ActionBarCompat NullPointerException Несколько репозиториев maven в Gradle Как правильно использовать AsyncTask в Android Удалите все фрагменты из ViewPager, заполненные FragmentStatePagerAdapter Android: Полный контроль над телефоном (режим киоска), возможно ли это? Как? Как / когда собирается мусор Handler? Превосходная программа для Android. Но Android 4.1.2 не запускает приложение Android: Как использовать метод onDraw в классе, расширяющем Activity?

Как создать тост из IntentService? Он застревает на экране

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

Кто-нибудь имеет эту проблему и решил ее?

В onCreate() инициализируйте Handler а затем onCreate() его из своего потока.

 private class DisplayToast implements Runnable{ String mText; public DisplayToast(String text){ mText = text; } public void run(){ Toast.makeText(mContext, mText, Toast.LENGTH_SHORT).show(); } } protected void onHandleIntent(Intent intent){ ... mHandler.post(new DisplayToast("did something")); } 

Используйте Handle, чтобы опубликовать Runnable, который содержит информацию о вашей операции

 protected void onHandleIntent(Intent intent){ Handler handler=new Handler(Looper.getMainLooper()); handler.post(new Runnable(){ public void run(){ //your operation... Toast.makeText(getApplicationContext(), "hello world", Toast.LENGTH_SHORT).show(); } }); 

Вот полный код класса IntentService, демонстрирующий тосты, которые помогли мне:

 package mypackage; import android.app.IntentService; import android.content.Intent; import android.os.Handler; import android.os.Looper; import android.widget.Toast; public class MyService extends IntentService { public MyService() { super("MyService"); } public void showToast(String message) { final String msg = message; new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show(); } }); } @Override protected void onHandleIntent(Intent intent) { showToast("MyService is handling intent."); } }