AlarmManager 可以按照”预先设定的时间“或”时间间隔"激活Intent的一种方式,他与timer不同的是,他是程序之外的,生命周期不受程序控制,即使程序关闭也会触发。它比Service和定时器更加节省资源。如果在应用程序内触发定时操作,推荐Handler,Timer以及Thread等方式。因为这样Android能更好的控制系统资源。
一.代码
public class MainActivity extends Activity { Button btn1,btn2; AlarmManager am; PendingIntent pi; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建AlarmManager am=(AlarmManager)getSystemService(Context.ALARM_SERVICE); btn1=(Button)findViewById(R.id.btn1); btn2=(Button)findViewById(R.id.btn2); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //启动照相机 Intent intent = new Intent("android.media.action.STILL_IMAGE_CAMERA"); pi= PendingIntent.getActivity(MainActivity.this,0,intent,0); //十秒后激活Intent Calendar calendar=Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.add(Calendar.SECOND, 10); //设置Alarm,第一个参数:Alarm类型,第二个参数触发时间,第三个参数PendingIntent am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi); } }); btn2=(Button)findViewById(R.id.btn2); btn2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //取消AlarmManager任务 am.cancel(pi); } }); } }