在Xamarin.Android中重复出现的后台任务

时间:2017-07-08 13:41:35

标签: c# android xamarin xamarin.android

我想为Android 6编写一个静音/振动调度程序。

因此,我需要一个后台任务,根据UI应用程序中定义的时间表设置声音/振动/静音。

如何将此类服务添加到我的应用程序以在后台运行? (定期检查/设置铃声状态的定期服务)

我可以使用AudioManager来读取/设置值,但我不知道如何安排任务。

1 个答案:

答案 0 :(得分:0)

您需要为这些添加广播接收器。将Android.Content.Intent设置为ActionTimeTick,以便每次更改时,android os都会广播消息(一个android意图)。

[BroadcastReceiver(Enabled = true)]
    [IntentFilter(new[] { Android.Content.Intent.ActionTimeTick })]
    public class GridStartBroadcastReceiver : BroadcastReceiver
    {
        public static readonly string GRID_STARTED = "GRID_STARTED";
        public override void OnReceive(Context context, Intent intent)
        {
           if (intent.Action == GRID_STARTED)
            {
         //your logic
            }
        }
    }

您需要先注册广播接收器。 将这些代码添加到oncreate方法以注册广播接收器。

IntentFilter filter = new IntentFilter(GridStartBroadcastReceiver.GRID_STARTED); filter.AddCategory(Intent.CategoryDefault); _receiver = new GridStartBroadcastReceiver(); RegisterReceiver(_receiver, filter);

接下来将广播发送给广播接收器。

//calling
                    Intent BroadcastIntent = new Intent(this, typeof(MainActivity.GridStartBroadcastReceiver));
                    BroadcastIntent.SetAction(MainActivity.GridStartBroadcastReceiver.GRID_STARTED);
                    BroadcastIntent.AddCategory(Intent.CategoryDefault);
                    SendBroadcast(BroadcastIntent);