[Mono-bugs] [Bug 655342] System.InvalidOperationException When Inheriting From IntentService

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Mon Nov 22 16:22:40 EST 2010



--- Comment #3 from Dan Russell <danomania at gmail.com> 2010-11-22 13:22:39 PST ---
(In reply to comment #1)
> Background:
>   - Types which are listed within AndroidManifest.xml may be created by
> Android.
>   - Types with the [Activity], [BroadcastReceiver], 
>     [ContentProvider], and [Service] attributes are inserted into the
>     resulting AndroidManifest.xml file.
>   - When Android creates one of these types, the default constructor is
> invoked.
>   - If the default constructor is not present, an error will be thrown and 
>     the app will terminate.

Thanks for the info. Now that I understand the context,...

> Thus, there is a choice here:
>  1. Generate an error if a type listed in AndroidManifest.xml doesn't have
>     a default constructor.  This is the current behavior.
>  2. Allow types with no default constructor to be present within 
>     AndroidManifest.xml, and have Android throw an error later.
> Obviously I like (1), but I'm willing to entertain (2).

I think your preference (1) works nicely. That way, we know about it at compile
time rather having to wait for a runtime error. I tested this in Eclipse. It
lets you compile it but from the logs, the runtime error isn't all that clear.

> As for Android.App.IntentService, the appropriate fix is to either:
>  1. Remove the [Service] attribute from your MyIntentService type; or

This error is generated whether the [Service] attribute is present or not.

>  2. Provide a default constructor, and provide a value to the base constructor:
>     [Service]
>     public MyIntentService : IntentService {
>         public MyIntentService ()
>             : base ("worker-thread-name")
>         {
>         }
>     }

This works for me.
Silly me. Why didn't I think of that?

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