在安卓程序中会用到定时做某事的功能。方法有很多种,闹钟是其中一种。简单介绍下。
第一输入框代表,从现在开始几秒后,启动这个闹钟。
第二个输入框代表,这个闹钟是一个重复闹钟,重复的时间是多少秒
主要作用监听闹钟,若闹钟响了,就触发对应事件。
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();}}
}
界面的控件及布局
=60)秒"android:inputType="numberDecimal" />
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
代码下载
1、 间隔不要小于60秒。安卓为了省电,会将小于60秒的定时闹钟,扩大到60秒。
2、若程序中需要用到小于60秒的,可以使用以下方法(Timer
和Handler
)
// 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);
参考资料1
参考资料2