C# 在Xamarin.Android中重复执行后台任务
我想为Android 6编写一个静默/振动调度程序 因此,我需要一个后台任务,根据UI应用程序中定义的时间表设置声音/振动/静音,该时间表已完成并准备就绪 如何将这样的服务添加到我的应用程序中以在后台运行?(定期服务,每分钟检查/设置铃声状态)C# 在Xamarin.Android中重复执行后台任务,c#,android,xamarin,xamarin.android,C#,Android,Xamarin,Xamarin.android,我想为Android 6编写一个静默/振动调度程序 因此,我需要一个后台任务,根据UI应用程序中定义的时间表设置声音/振动/静音,该时间表已完成并准备就绪 如何将这样的服务添加到我的应用程序中以在后台运行?(定期服务,每分钟检查/设置铃声状态) 我可以使用AudioManager读取/设置值,但我不知道如何安排任务。您需要为这些添加广播接收器。将Android.Content.Intent设置为ActionTimeTick,这样无论何时更改时间,Android操作系统都会广播消息(Android
我可以使用
AudioManager
读取/设置值,但我不知道如何安排任务。您需要为这些添加广播接收器。将Android.Content.Intent设置为ActionTimeTick,这样无论何时更改时间,Android操作系统都会广播消息(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方法以注册广播接收器
//calling
Intent BroadcastIntent = new Intent(this, typeof(MainActivity.GridStartBroadcastReceiver));
BroadcastIntent.SetAction(MainActivity.GridStartBroadcastReceiver.GRID_STARTED);
BroadcastIntent.AddCategory(Intent.CategoryDefault);
SendBroadcast(BroadcastIntent);
IntentFilter过滤器=新的IntentFilter(gridstartbroadcasreceiver.GRID_已启动);
filter.AddCategory(Intent.CategoryDefault);
_接收器=新的GridStartBroadcastReceiver();
寄存器接收器(接收器、滤波器)代码>
接下来,将广播发送到广播接收器
//calling
Intent BroadcastIntent = new Intent(this, typeof(MainActivity.GridStartBroadcastReceiver));
BroadcastIntent.SetAction(MainActivity.GridStartBroadcastReceiver.GRID_STARTED);
BroadcastIntent.AddCategory(Intent.CategoryDefault);
SendBroadcast(BroadcastIntent);
您需要为这些设备添加广播接收器。将Android.Content.Intent设置为ActionTimeTick,这样无论何时更改时间,Android操作系统都会广播消息(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方法以注册广播接收器
//calling
Intent BroadcastIntent = new Intent(this, typeof(MainActivity.GridStartBroadcastReceiver));
BroadcastIntent.SetAction(MainActivity.GridStartBroadcastReceiver.GRID_STARTED);
BroadcastIntent.AddCategory(Intent.CategoryDefault);
SendBroadcast(BroadcastIntent);
IntentFilter过滤器=新的IntentFilter(gridstartbroadcasreceiver.GRID_已启动);
filter.AddCategory(Intent.CategoryDefault);
_接收器=新的GridStartBroadcastReceiver();
寄存器接收器(接收器、滤波器)代码>
接下来,将广播发送到广播接收器
//calling
Intent BroadcastIntent = new Intent(this, typeof(MainActivity.GridStartBroadcastReceiver));
BroadcastIntent.SetAction(MainActivity.GridStartBroadcastReceiver.GRID_STARTED);
BroadcastIntent.AddCategory(Intent.CategoryDefault);
SendBroadcast(BroadcastIntent);
您应该使用android内置服务AlarmManager。阅读谷歌文档,了解如何正确使用它。你应该使用安卓内置服务AlarmManager。阅读谷歌文档,学习如何正确使用它