zoukankan      html  css  js  c++  java
  • Mono For Android中AlarmManager的使用

    最近做了一个应用,要求如下:

      程序运行之后的一段时间,分别触发3个不同的事件。当然很快就想到了Android中的AlarmManager和BroadcastReceiver。但是毕竟Mono环境和Java环境还是有所不同的,那么在Mono环境下如何实现呢?

      最初我是想获取3个AlarmManager来实现,每个AlarmManager控制一个事件的发生,采用3个不同的BroadcastReceiver来接受传递过来的Intent消息,但觉得这样有点浪费资源。后来仔细查看Api才发现只要合理的设置参数,就可以通过一个BroadcastReceiver来处理。具体参见以下函数:

      获取AlarmManager实例:

     

    private AlarmManager alarmMgr;
    private PendingIntent alarmIntent;
    alarmMgr = (AlarmManager)GetSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, AlarmReceiver.class);
    alarmIntent = PendingIntent.GetBroadcast(context, 0, intent, 0);
    
    alarmMgr.Set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
            SystemClock.elapsedRealtime() +
            60 * 1000, alarmIntent);

      注意:由于是通过PendingIntent传递信息的,所以只要对PendingIntent对象的参数进行区别即可,及设置GetBroadcast()的第二和第四个参数,即可在不同时间,利用一个BroadcastReceiver来接受不同的intent了。

      另外,在Mono环境下要注意定义自己的BroadcastReceiver类时,要记得在类名上加上[BroadcastReceiver],即注册这个类表明它是一个BroadcastReceiver。

      好了,就这了,刚学习,也讲不出什么高深的东西,就把自己遇到的问题即解决方法记录下来吧!

     
  • 相关阅读:
    服务器IIS禁止通过IP访问
    如何自定义Kubernetes资源
    敏捷 | 无处不在的敏捷思想应用
    敏捷 | 如何做好服务型Scrum Master?
    敏捷 | 如何填好推进的坑?
    敏捷 | 如何正确推进敏捷?
    敏捷 | 如何正确理解敏捷?
    管理 |《技术管理案例课》学习总结(下)
    管理 |《技术管理案例课》学习总结(上)
    《ArcGIS 从基础到实战》书正式出版
  • 原文地址:https://www.cnblogs.com/rainmonth/p/3432235.html
Copyright © 2011-2022 走看看