Xamarin.Android通过闹钟(AlarmManager)实现定时功能
创始人
2025-06-01 13:39:45
0

目录

  • 1、说明
  • 2、效果
    • 2.1 实现效果
    • 2.2 功能说明
  • 3、代码实现
    • 3.1 定义广播接收器
    • 3.2 layout文件
    • 3.3 Activity代码
  • 4、代码下载
  • 5、其他说明
    • 6.1 其他说明
  • 6、参考

1、说明

在安卓程序中会用到定时做某事的功能。方法有很多种,闹钟是其中一种。简单介绍下。

2、效果

2.1 实现效果

在这里插入图片描述

2.2 功能说明

第一输入框代表,从现在开始几秒后,启动这个闹钟。
第二个输入框代表,这个闹钟是一个重复闹钟,重复的时间是多少秒

3、代码实现

3.1 定义广播接收器

主要作用监听闹钟,若闹钟响了,就触发对应事件。

using Android.Content;
using Android.Widget;namespace AlarmDemo
{[BroadcastReceiver]public class MyReceiver : BroadcastReceiver{public override void OnReceive(Context context, Intent intent){Toast.MakeText(context, "闹铃响了!", ToastLength.Short).Show();}}
}

3.2 layout文件

界面的控件及布局


=60)秒"android:inputType="numberDecimal" />

3.3 Activity代码

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Widget;
using AndroidX.AppCompat.App;
using Java.Lang;
using System;namespace AlarmDemo
{[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]public class MainActivity : AppCompatActivity{//DECLARE WIDGETSprivate Button startBtn;private EditText timeTxt,internalTxt;protected override void OnCreate(Bundle savedInstanceState){base.OnCreate(savedInstanceState);Xamarin.Essentials.Platform.Init(this, savedInstanceState);// Set our view from the "main" layout resourceSetContentView(Resource.Layout.activity_main);this.initializeViews();}public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults){Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);base.OnRequestPermissionsResult(requestCode, permissions, grantResults);}private void initializeViews(){timeTxt = FindViewById(Resource.Id.timeTxt);internalTxt = FindViewById(Resource.Id.initTime);startBtn = FindViewById

4、代码下载

代码下载

5、其他说明

6.1 其他说明

1、 间隔不要小于60秒。安卓为了省电,会将小于60秒的定时闹钟,扩大到60秒。
2、若程序中需要用到小于60秒的,可以使用以下方法(TimerHandler

// Frequent operation using .NET Timer.
System.Timers.Timer t = new System.Timers.Timer (1000);
t.AutoReset = true;
t.Elapsed += (object sender, System.Timers.ElapsedEventArgs e) => {t.Interval = 2000;RunOnUiThread (() => Toast.MakeText (this, "Hi", ToastLength.Short).Show ());
};
t.Start ();// Frequent operation using Android.OS.Handler
handler = new Handler ();
Action callback = null;
callback = () => {//Do something after 100msToast.MakeText(this, "Hi", ToastLength.Short).Show();  handler.PostDelayed(callback, 2000);
};
handler.PostDelayed(callback, 1000);

6、参考

参考资料1
参考资料2

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...