C# Android Alarm Manager未在指定时间启动
我正在尝试在将来的某个固定点执行一个通知,但是我很难让它正常工作。它立即开火,而不是在将来的指定时间。下面是我的接受者课程。我从另一个类调用SetAlarm并传递一个时间间隔,即alertTime。有什么想法吗?谢谢C# Android Alarm Manager未在指定时间启动,c#,android,xamarin.android,xamarin,C#,Android,Xamarin.android,Xamarin,我正在尝试在将来的某个固定点执行一个通知,但是我很难让它正常工作。它立即开火,而不是在将来的指定时间。下面是我的接受者课程。我从另一个类调用SetAlarm并传递一个时间间隔,即alertTime。有什么想法吗?谢谢 using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Util;
namespace Test_Android
{
[BroadcastReceiver]
class NotificationAlertReceiver : BroadcastReceiver
{
public NotificationAlertReceiver()
{
}
public override void OnReceive(Context context, Intent intent)
{
PowerManager pm = (PowerManager)context.GetSystemService(Context.PowerService);
PowerManager.WakeLock w1 = pm.NewWakeLock (WakeLockFlags.Partial, "NotificationReceiver");
w1.Acquire ();
var nMgr = (NotificationManager)context.GetSystemService (Context.NotificationService);
var notification = new Notification (Resource.Drawable.loadIcon, "Arrival");
var pendingIntent = PendingIntent.GetActivity (context, 0, new Intent (context, typeof(MainActivity)), 0);
notification.SetLatestEventInfo (context, "Arrival", "Arrival", pendingIntent);
nMgr.Notify (0, notification);
w1.Release ();
}
public void CancelAlarm(Context context){
Intent intent = new Intent(context, this.Class);
PendingIntent sender = PendingIntent.GetBroadcast (context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.GetSystemService (Context.AlarmService);
alarmManager.Cancel (sender);
}
public void SetAlarm(Context context, int alertTime){
long now = SystemClock.CurrentThreadTimeMillis();
AlarmManager am = (AlarmManager) context.GetSystemService (Context.AlarmService);
Intent intent = new Intent(context, this.Class);
PendingIntent pi = PendingIntent.GetBroadcast (context, 0, intent, 0);
am.Set (AlarmType.RtcWakeup, now + ((long)(alertTime*10000)), pi);
}
}
}
您是否在AndroidManifest.xml中注册了接收者
<receiver android:name=".NotificationAlertReceiver "></receiver>
由于您的报警使用的是AlarmType.RtcWakeup,您应该为“now”变量使用实时(如System.currentTimeMillis())而不是线程时间 此外,将秒数乘以10000得到毫秒数。正确的乘数是1000