平时开发中会有到延时操作需求,在次记录一下延时的实现姿势:
1、Handler PostDelay
new Handler().postDelayed(new Runnable(){
public void run() {
//execute your task
}
}, delaytime);
2、开一个新的线程
new Thread(new Runnable(){
public void run(){
Thread.sleep(delaytime);
handler.sendMessage(); //execute your task
}
}).start
3、使用定时器
TimerTask task = new TimerTask(){
public void run(){
//execute your task
}
};
Timer timer = new Timer();
timer.schedule(task, delay);
4、AlarmManager 定时发送任务
1)、定时发送广播
Intent intent = new Intent("com.pop.ClockReceiver");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,23);
calendar.set(Calendar.MINUTE,15);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1 * 1000, sender);
2)、清单文件中初始化广播接受者
<receiver
android:name=".receiver.ClockReceiver"
android:enabled="true"
android:exported="true"
tools:ignore="ExportedReceiver" >
<intent-filter>
<action android:name="com.pop.BlockReceiver" />
</intent-filter>
</receiver>
3)、接收广播
public class BlockReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//excute your task
}
}