Oops .. apologies for the typo, and the ensuing confusion. I did mean 
LocalBroadcastManager in my original post, wherever I referred to 
LocalBroadcastReceiver.

Mark has summed it all up in his response. My current implementation is 
this:

try to fork BroadcastReceiver and use a forked edition with 
> LocalBroadcastManager and ordered-broadcast support


But I have added my own flag (mConsumed) and added my own methods (
consumeBroadcast(), clearConsumeBroadcast() and isBroadcastConsumed()).

Secondly, my solution still doesn't allow using any of the setResult*methods of 
BroadcastReceiver (since all of these first do a checkSynchronousHint()). 
The way around this is to add another bunch of methods that basically do 
the exact same thing as getResult* and setResult* ; but which do not go 
through the checkSynchronousHint() path.

Using setOrderedHint() which would allow me to avoid all of this pain.All 
my changes would be isolated to LocalBroadcastManager, and I would not need 
to fork BroadcastReceiver (not to mention that code which registers for 
such local ordered broadcasts wouldn't need to deal with yet another forked 
class; and confusing methods like consumeBroadcast() in place of 
abortBroadcast())

On Friday, 18 May 2012 02:18:21 UTC+5:30, Mark Murphy (a Commons Guy) wrote:
>
> On Thu, May 17, 2012 at 4:27 PM, Dianne Hackborn <hack...@android.com> 
> wrote: 
> > No, you should not be using it.  Why would you even *want* to use it?  I 
> can 
> > only imagine using this to do things that are broken. :) 
>
> To clarify (and fix a typo in Kiran's post), he is working on adding 
> ordered broadcasts to LocalBroadcastManager from the Android Support 
> package, while maintaining maximum fidelity with the protocol used by 
> regular ordered broadcasts. 
>
> Most of this can go into (a fork of) LocalBroadcastManager without 
> issue. However, calling abortBroadcast() on a BroadcastReceiver throws 
> a RuntimeException ("BroadcastReceiver trying to return result during 
> a non-ordered broadcast") if you try to use abortBroadcast() without 
> having the Intent go through the standard sendOrderedBroadcast(). 
>
> I have not seen Kiran's code -- I have merely been advising him so far 
> via email, as this is an itch I had been meaning to scratch myself. 
> Off the cuff, the options appear to be: 
>
> - use setOrderedHint(), despite it being labeled as "internal", or 
>
> - attempt to override the internal checkSynchronousHint() to not raise 
> the RuntimeException, or 
>
> - try to fork BroadcastReceiver and use a forked edition with 
> LocalBroadcastManager and ordered-broadcast support, or 
>
> - abandon LocalBroadcastManager entirely and create a workalike that 
> supports ordered "pseudocasts" or some such 
>
> Certainly, I am up for other suggestions. 
>
> Thanks! 
>
> -- 
> Mark Murphy (a Commons Guy) 
> http://commonsware.com | http://github.com/commonsguy 
> http://commonsware.com/blog | http://twitter.com/commonsguy 
>
> Android Training...At Your Office: http://commonsware.com/training 
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to