AlarmManager类

来源:互联网 发布:c语言可以用else if 编辑:程序博客网 时间:2024/06/18 02:43

最近工作有用到定时器的功能,我原来也没有接触过关于定时器的功能,在网上找了些资料,了解了一下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
原创粉丝点击