首页 > 其他分享 >android之定时器AlarmManager .

android之定时器AlarmManager .

时间:2022-10-06 12:11:02浏览次数:57  
标签:定时器 layout AlarmManager set android 定时 view


 果图:

       当我们点击定时时,会弹出一个时间选择器,选定好时间之后,系统便可以进行定时了。注意,这里可不是会真的响铃,我们在定时的任务里并没有添加响铃的代码,只是在Logcat中做了个简单的打印。本例子重点在于讲解在android中AlarmManager的使用。

      activity的代码:

 


​view plain​​​ ​​​copy to clipboard​​​ ​​​print​​​ ​​​?​



  1. package

  2. import

  3. import
  4. import
  5. import
  6. import
  7. import
  8. import
  9. import
  10. import
  11. import
  12. import
  13. import
  14. import
  15. import
  16. import
  17. import

  18. public class AlarmManagerActivity extends Activity implements
  19. // 代表当前时间的日历
  20. Button button1 ;
  21. CheckBox checkBox;
  22. boolean flag = false ;// 是否只执行一次

  23. @Override
  24. protected void
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.alarm);

  27. button1 = (Button) findViewById(R.id.button_alarm1);
  28. checkBox = (CheckBox) findViewById(R.id.checkBox1_alarm);
  29. this);

  30. this);
  31. }

  32. @Override
  33. public void
  34. if(v==button1){
  35. calendar.setTimeInMillis(System.currentTimeMillis());
  36. new TimePickerDialog(AlarmManagerActivity.this, this,
  37. calendar.get(Calendar.HOUR_OF_DAY),
  38. true).show();
  39. }
  40. }

  41. /**
  42. * 当我们设置了新时间时触发。
  43. */
  44. @Override
  45. public void onTimeSet(TimePicker view, int hourOfDay, int

  46. // 将时间设置为定时的时间
  47. calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
  48. calendar.set(Calendar.MINUTE, minute);

  49. new Intent(AlarmManagerActivity.this,MyAlarmBroadCast.class);
  50. 0, intent, 0);

  51. /***
  52. * 获取全局定时器的服务管理器
  53. */
  54. AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

  55. if(flag){


  56. /**
  57. * 指定的任务只会执行一次,如果该pendingIntent指定的任务已经被执行过了,那么该方法直接会被cancel掉。
  58. *  set(int type, long triggerAtTime, PendingIntent operation)
  59. *  type 指定定时模式。
  60. *  triggerAtTime 触发任务的时间。该参数和定时模式息息相关
  61. *  operation 该参数指定一个广播Intent,当时间到了时,系统会广播里面的intent,触发相应的广播接收者执行某些操作,比如响铃……
  62. */
  63. alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
  64. }
  65. else
  66. {
  67. /**
  68. * 通过该方法指定的任务会一直间隔执行,第三个参数就指定了执行的时间间隔
  69. * 如果我们想取消的话,请使用:alarmManager.cancel(pendingIntent);
  70. * 注意,这里的pendingIntent要和setRepeating方法中的一致哦。
  71. */
  72. 5*1000, pendingIntent);
  73. }
  74. "通知", "定时成功!");

  75. }



  76. @Override
  77. public void onCheckedChanged(CompoundButton buttonView, boolean
  78. flag = !isChecked;
  79. }




  80. }


 

alarm.xml

 


​view plain​​​ ​​​copy to clipboard​​​ ​​​print​​​ ​​​?​



  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent" android:layout_height="match_parent"
  4. android:orientation="vertical">
  5. <AnalogClock android:id="@+id/analogClock1_alarm"
  6. android:layout_width="wrap_content" android:layout_height="wrap_content"></AnalogClock>
  7. <CheckBox android:text="是否重复响铃" android:id="@+id/checkBox1_alarm" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
  8. <Button android:text="定时" android:id="@+id/button_alarm1"
  9. android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
  10. </LinearLayout>


 

MyAlarmBroadCast.java

 


​view plain​​​ ​​​copy to clipboard​​​ ​​​print​​​ ​​​?​



  1. package

  2. import
  3. import
  4. import
  5. import
  6. import

  7. /**
  8. * 声明接受AlarmManager时间到了时发布的广播
  9. * @author chenzheng_java
  10. */
  11. public class MyAlarmBroadCast extends

  12. @Override
  13. public void
  14. "通知", "收到了广播");
  15. // 可以在此处添加响铃的代码
  16. }

  17. }


 

Manifest.xml代码:

 


​view plain​​​ ​​​copy to clipboard​​​ ​​​print​​​ ​​​?​



  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="cn.com.chenzheng_java"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdk android:minSdkVersion="8" />

  7. <application android:icon="@drawable/icon" android:label="@string/app_name">
  8. <activity android:name="AlarmManagerActivity"
  9. android:label="@string/app_name">
  10. <intent-filter>
  11. <action android:name="android.intent.action.MAIN" />
  12. <category android:name="android.intent.category.LAUNCHER" />
  13. </intent-filter>
  14. </activity>
  15. <receiver android:name="MyAlarmBroadCast"/>
  16. </application>
  17. </manifest>


 

------------------------------------------------------------------

 

AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟。通过对它的使用,个人觉得叫全局定时器比较合适,其实它的作用和Timer有点相似。都有两种相似的用法:(1)在指定时长后执行某项操作(2)周期性的执行某项操作

使用的步骤:

第一:获取管理器。AlarmManager alarmManager = this.getSystemService(ALARM_SERVICE);

第二:通过AlarmManager的set和setRepeating方法定时。可以通过cancel()方法取消定时。

      在set和setRepeating方法中,第一个参数type代表定时模式,这里的定时模式主要有以下几种。

 

 

 

标签:定时器,layout,AlarmManager,set,android,定时,view
From: https://blog.51cto.com/jdsjlzx/5733464

相关文章

  • Android中的JSON详细总结
    1、JSON(JavaScriptObjectNotation)定义:一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得......
  • Android开发之PreferenceActivity .
    今天我们来讲PreferenceActivity的使用。我们先来认识一下它,看看它长什么样?呵呵,截图如下:看到没?这就是PreferenceActivity.看起来蛮眼熟的,在哪见过。呵呵,对,在我们得模拟器“......
  • Android软件开发之盘点自定义View界面大合集
    今天我用自己写的一个Demo和大家详细介绍一个Android中自定义View中的使用与绘制技巧。1.自定义view绘制字符串            相信在实际开发过程中必然很多......
  • Android 设置主题实现点击波纹效果
    开头先说说大家都知道的MaterialDesign。这里推荐​​大苞米​​的系列博客,介绍的很全面。MaterialDesign:MaterialDesign是Google推出的一个全新的设计语言,它的特点就是......
  • Android中 android:gravity 和 android:layout_gravity的区别
    在配置xml布局时,经常用到 android:gravity 和 android:layout_gravity这两个属性,这里记录一下他们的区别。1.android:gravity android:gravity常用于控制view的内部......
  • Action Bar使用方法 - Android活动栏(一)
     ActionBar主要功能包含: 1.显示选项菜单 2.提供标签页的切换方式的导航功能,可以切换多个fragment. 3. 提供下拉的导航条目. 4.提供交互式活动视图代替选......
  • Android如何判断应用程序是安装在手机内存中还是SD卡
    /***判断包名所对应的应用是否安装在SD卡上*@parampackageName*@return,trueifinstallonSDcard*/publicstaticbooleanisInstallOnSDCard(Stringpac......
  • Android 创建与解析XML(一)—— 概述
    Android是最常用的智能手机平台,XML是数据交换的标准媒介,Android中可以使用标准的XML生成器、解析器、转换器API,对XML进行解析和转换。XML,相关有DOM、SAX、JDOM、DOM......
  • Android 滑动效果基础篇(三)—— Gallery仿图像集浏览
    Android系统自带一个Gallery浏览图片的应用,通过手指拖动时能够非常流畅的显示图片,用户交互和体验都很好。本示例就是通过Gallery和自定义的View,模仿实现一个仿Gallery图......
  • Android 滑动效果入门篇(一)—— ViewFlipper
    ​​​ViewFilpper​​ 是Android官方提供的一个View容器类,继承于ViewAnimator类,用于实现页面切换,也可以设定时间间隔,让它自动播放。又ViewAnimator继承至于FrameLayout......