Hi all,

I'm having this dilemma on Activity/Service "binding" that I don't quite
know what is the best way to achieve.
Here's a common scenario...

We have an activity named *LoginActivity*. This activity has two fields,
username and password.
The authentication operation consists in making a web request, and
processing the result. Visually, we want to display a nice progress bar
while we wait.

That's it. Pretty common.
Obviously, we want to consider things like the activity getting paused or
the screen orientation changing.

After reading the docs and going through a few forums, I came up with a
solution.

First, the dialog issue. If the screen orientation changes, the view is
destroyed and recreated, so the dialog just disappears (and worse, it's
lost in space - leaks).
What I did was to keep a reference to the progress dialog shown. I retain a
flag stating that the progress dialog is visible by overriding the *
OnRetainNonConfigurationInstance*. I also make sure I dismiss the dialog
when the activity gets trashed (destroyed). When the new view gets created,
I recover the flag and show a new progress dialog. This works well.
There were other methods, like *configChanges*, but I didn't want to handle
the view resources myself, so this seemed like a good and clean approach.

Now for the operation, I created a service to handle it. More specifically
an *IntentService*. The request is done in background, and when done, I
send a broadcast with the result. Because the activity might pause (or
trashed), I send a sticky intent broadcast, to make sure it reaches its
destination. When received, I clear up the sticky intent.

This works quite well...
Though I was happy with the result, I questioned if this was the best
approach. Some defend that using sticky intents is evil, even though I do a
very assertive use. Some say that service binding is a better approach,
though I don't know if it can be used with an IntentService and it seems
like an awful lot of trouble for such a simple task (maybe I'm just not
looking correctly).

So, any thoughts on this approach and on best practices for accomplishing
this are greatly appreciated.
Cheers.


-- 
Gonçalo Oliveira
_______________________________________________
Monodroid mailing list
Monodroid@lists.ximian.com

UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid

Reply via email to