AlarmManager类

最近工作有用到定时器的功能,我原来也没有接触过关于定时器的功能,在网上找了些资料,了解了一下AlarmManager类.

一、AlarmManager类
这个类提供了对系统报警服务的访问。

二、.结构关系
extends Object

三.获取这个类的实例

AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

四、AlarmManager的用法

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btnset;
    private Calendar calendar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnset = (Button) findViewById(R.id.btnset);
        btnset.setOnClickListener(this);
        //获得日历的实例对象
        calendar = Calendar.getInstance();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btnset:
                showDialog(0);
                break;
        }
    }

    @Override
    protected Dialog onCreateDialog(int id) {
        Dialog dialog = null ;
        switch (id){
            case 0 :
                dialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Intent intent = new Intent(MainActivity.this,alarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0,intent,0);
                        calendar.setTimeInMillis(System.currentTimeMillis());                   calendar.set(Calendar.HOUR_OF_DAY,hourOfDay);
                        calendar.set(Calendar.MINUTE,minute);
                        calendar.set(Calendar.SECOND,0);
                        calendar.set(Calendar.MILLISECOND, 0);
//AlarmManager对象
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
//设置闹钟 一次性的;arg0:闹钟类型;arg1:在多少毫秒时间关闭;arg2:意图                 

am.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);  
//设置重复闹钟  arg0:闹钟类型;arg1:在多少毫秒时间关闭;arg2:闹钟重复的时间间隔;arg3:意图                  

am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis()+(10*1000),(24*60*60*1000),pendingIntent);
//取消闹钟,取消的Intent必须与启动Intent保持绝对一致才能支持取消
//am.cancel(pendingIntent);

                }
            },0,0,true);
          break ;
        }
        return dialog;
    }
}

清单文件中注册广播

<receiver  
            android:name=".alarm"  
            android:process=":remote"></receiver>  
        <!-- 也就是说android:process=":remote",代表在应用程序里,当需要该service时,会自动创建新的进程。而如果是android:process="remote",没有“:”分号的,则创建全局进程,不同的应用程序共享该进程。 --> 

参考自:http://blog.csdn.net/q445697127/article/details/7763917

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值