我使用下面的代码
使用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
答案 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);
}