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);
            }
        });
    }
}
View Code

相关文章:

  • 2022-12-23
  • 2021-08-15
  • 2021-08-17
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-10-25
  • 2021-09-02
  • 2021-07-18
  • 2021-11-13
相关资源
相似解决方案