[Mono-bugs] [Bug 667406] New: Event'd BroadcastReceiver would be nice

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Wed Jan 26 14:40:58 EST 2011


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

https://bugzilla.novell.com/show_bug.cgi?id=667406#c0


           Summary: Event'd BroadcastReceiver would be nice
    Classification: Mono
           Product: MonoDroid
           Version: SVN
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Enhancement
          Priority: P5 - None
         Component: Class Libraries
        AssignedTo: mkestner at novell.com
        ReportedBy: jondick at gmail.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)
AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10

Having a class included like this would be nice (Not sold on the
EventBroadcastReceiver name):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace Blah
{
    public class EventBroadcastReceiver : BroadcastReceiver
    {
        public event Action<Context, Intent> Receive;

        public override void OnReceive(Context context, Intent intent)
        {
            if (this.Receive != null)
                this.Receive(context, intent);
        }

        public void Register(Context context, string action)
        {
            context.RegisterReceiver(this, new IntentFilter(action));
        }

        public void Register(Context context, string action, string dataType)
        {
            context.RegisterReceiver(this, new IntentFilter(action, dataType));
        }

        public void Register(Context context, IntentFilter filter)
        {
            context.RegisterReceiver(this, filter);
        }

        public void Unregister(Context context)
        {
            context.UnregisterReceiver(this);
        }
    }
}



Then we could implement in an activity like this:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace MyApp
{
    [Activity(Label = "My Activity")]
    public class BroadcastActivity : ListActivity
    {
        EventBroadcastReceiver broadcastReceiver;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            broadcastReceiver = new EventBroadcastReceiver();
            broadcastReceiver.Receive += (Context context, Intent intent) =>
            {
                //Get new data

                //Refresh list
                this.ListView.RefreshDrawableState();
            };
        }

        protected override void OnResume()
        {
            base.OnResume();

            broadcastReceiver.Register(this,
"com.myapp.broadcastactivity.SOME_ACTION");
        }

        protected override void OnPause()
        {
            broadcastReceiver.Unregister(this);

            base.OnPause();
        }
    }
}

Reproducible: Always

-- 
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