How to create toast from IntentService? It gets stuck on the screen
in onCreate()
initialize a Handler
and then post to it from your thread.
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")); }
Here is the full IntentService Class code demonstrating Toasts that helped me:
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."); }}
Use the Handle to post a Runnable which content your operation
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(); } });