如何从androids AlarmClock类中取消计时器

时间:2017-08-14 10:48:02

标签: c# android xamarin android-activity timer

我使用下面的代码

使用Androids构建的AlarmClock类创建了一个计时器
 public static int[] twoSum(int[] nums, int target) {
        int []resultarray=new int[2];
        for (int i=0;i<nums.length-1;i++){
            for(int k=1;k<nums.length;k++)
            {
                 if(target==nums[i]+nums[k])
                 {
                     resultarray[0]=nums[i];
                     resultarray[1]=nums[k];
                 }
            }
        }
 return resultarray;
    }

它工作正常,计时器正常运行。我遇到的问题是如何过早取消该计时器。我应该以某种方式搜索计时器然后解雇它吗?

https://developer.android.com/reference/android/provider/AlarmClock.html

1 个答案:

答案 0 :(得分:1)

由于AlarmClock类没有为此公开公共操作,因此没有受支持的方式以编程方式执行此操作。期望可能是用户将通过UI完成。如果您想要更多控制,请使用AlaramManager并设置/清除您自己的警报。

修改:

这样的用法:

AlarmManager manager;
Intent alarmIntent;
PendingIntent pendingIntent;

...

//Creat a timer
private void StartAlarmClockTimer()
{
     manager = (AlarmManager)GetSystemService(Context.AlarmService);
     alarmIntent = new Intent(Android.Provider.AlarmClock.ActionSetTimer);
     alarmIntent.PutExtra(Android.Provider.AlarmClock.ExtraLength, 2);
     alarmIntent.PutExtra(Android.Provider.AlarmClock.ExtraVibrate, true);
     alarmIntent.PutExtra(Android.Provider.AlarmClock.ExtraMessage, "Custom Text!");
     alarmIntent.PutExtra(Android.Provider.AlarmClock.ExtraSkipUi, true);
     alarmIntent.AddFlags(ActivityFlags.NewTask);

     pendingIntent = PendingIntent.GetActivity(this, 0, alarmIntent, 0);
     manager.SetExact(AlarmType.RtcWakeup, SystemClock.ElapsedRealtime(), pendingIntent);
};

//Cancel a timer
private void CancelAlarmClockTimer()
{
    manager.Cancel(pendingIntent);
}