This IntentService I created will show Toasts in onStartCommand() and in onDestroy(), but not in onHandleIntent(). Am I missing something about the limitations of an IntentService?
public class MyService extends IntentService {  private static final String TAG = "MyService";  public MyService(){     super("MyService"); }  @Override protected void onHandleIntent(Intent intent) {     cycle(); }  @Override public int onStartCommand(Intent intent, int flags, int startId) {     Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show(); //This happens!     return super.onStartCommand(intent,flags,startId); }  @Override public void onCreate() {     super.onCreate();  }  @Override public void onDestroy() {     Toast.makeText(this, "service stopping", Toast.LENGTH_SHORT).show(); //This happens!     super.onDestroy(); }  private void cycle(){       Toast.makeText(this, "cycle done", Toast.LENGTH_SHORT).show();  //This DOESN'T happen!       Log.d(TAG,"cycle completed"); //This happens! } } The accepted answer is not correct.
Here is how you can show toast from onHandleIntent():
Create a DisplayToast class:
public class DisplayToast implements Runnable {     private final Context mContext;     String mText;      public DisplayToast(Context mContext, String text){         this.mContext = mContext;         mText = text;     }      public void run(){         Toast.makeText(mContext, mText, Toast.LENGTH_SHORT).show();     } } Instantiate a Handler in your service's constructor and call the post method with a DisplayToast object inside.
public class MyService extends IntentService { Handler mHandler;  public MyService(){     super("MyService");     mHandler = new Handler(); }  @Override protected void onHandleIntent(Intent intent) {     mHandler.post(new DisplayToast(this, "Hello World!"));  } } If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With