[Mono-bugs] [Bug 686305] Toast in IntentService not showing up...

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Apr 8 14:28:18 EDT 2011


https://bugzilla.novell.com/show_bug.cgi?id=686305

https://bugzilla.novell.com/show_bug.cgi?id=686305#c1


Jonathan Pryor <jpryor at novell.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |jpryor at novell.com
         Resolution|                            |INVALID

--- Comment #1 from Jonathan Pryor <jpryor at novell.com> 2011-04-08 18:28:17 UTC ---
The problem is in the Handler documentation:

    http://developer.android.com/reference/android/os/Handler.html

    "When you create a new Handler, it is bound to the 
    thread / message queue of the thread that is creating it"

Since you're creating the Handler instance within OnHandleIntent(), which is
invoked on the worker thread, you're thus creating a Handler bound to the
worker thread, which doesn't have a message queue, so nothing happens. :-)

The fix is to create the Handler instance on a thread which does have a message
queue:

    [Service]
    public class ToastService : IntentService
    {
        Handler handler;

        public override void OnCreate ()
        {
            base.OnCreate ();
            handler = new Handler ();
        }

        protected override void OnHandleIntent(Intent intent)
        {
            handler.Post(() => {
                Toast.MakeText(this, "Pass the TOAST!  2",
ToastLength.Short).Show();
            });
        }
    }

This allows the Toast messages to be seen, as desired.

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list