整理常见的延时处理方法,作为记录。

1、Handler.postDelayed()

适合在主线程更新UI操作,不会阻塞线程

 Handler handler = new Handler(); // 如果这个handler是在UI线程中创建的handler.postDelayed(new Runnable() {  // 开启的runnable也会在这个handler所依附线程中运行,即主线程@Overridepublic void run() {// 可更新UI或做其他事情// 注意这里还在当前线程,没有开启新的线程// new Runnable(){},只是把Runnable对象以Message形式post到UI线程里的Looper中执行,并没有新开线程。}}, 3000); // 延时3s执行run内代码

2、Handler.sendEmptyMessage()

 final int MSG_WHAT = 1;Handler handler = new Handler() {@Overridepublic void handleMessage(Message message) {switch(message.what) {case MSG_WHAT:// 更新UIbreak;}}};// 延时3s执行MSG_WHAThandler.sendEmptyMessageDelayed(MSG_WHAT, 3000);

3、Thread.sleep()

Thread.sleep()会使当前线程阻塞,建议创建新线程做延时操作

 new Thread() {@Overridepublic void run() {Thread.sleep(3000);// 3s后会执行的操作}}.start();

4、TimerTask

 TimerTask task = new TimerTask() {@Overridepublic void run() {// 要执行的操作}};Timer timer = new Timer();timer.schedule(task, 3000); // 延时3s 执行TimeTask的run方法

5、AlarmManager.setRepeating()

适合需要一直在后台运行的定时任务,比如每隔5分钟就做一件事,在应用保活情况下,延时是精准的。

概念
Intent是立刻执行的, PendingIntent不是立刻执行的。
getBroadcast(Context, int, Intent, int) 发送一个广播组件
getService(Context, int, Intent, int) 启动一个服务组件

代码释义:从当前时间开始设置闹钟去启动TestIntentService服务,执行其action为ACTION_TEST的内容,设定每隔1分钟执行一次。

 Intent intent = new Intent(context, TestIntentService.class); intent.setAction(TestIntentService.ACTION_TEST);PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,      // 使用手机系统设置的时间System.currentTimeMillis(),      // 表示任务首次执行的时间60*1000,                        // 1min后再次执行任务pendingIntent);
 public static class TestIntentService extends IntentService {protected static final String ACTION_TEST= "action_test";public TestIntentService () {super("TestIntentService ");}@Overrideprotected void onHandleIntent(Intent intent) {String action = intent.getAction();switch (action) {case ACTION_TEST:...break;}}
}

Android之延时操作方法相关推荐

  1. arcgis for android离线编辑,操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容...

    操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容 摘要 Collector for ArcGIS 会将离线副本存储在 SQLite 数 ...

  2. android 动画延时执行,Android Animation --ScaleAnimation

    ScaleAnimation 缩放动画效果  是安卓中的动画效果之一 相关构造初始化方法 ScaleAnimation scale =new ScaleAnimation(Context contex ...

  3. Android 视频播放延时抖动那些事

    一.背景 局域网模式下,Android手机播放相机视频流,使用Android 自带MediaCodec解码,视频延时较大,约700ms左右.使用FFmpeg软解+转码,延时200ms左右,但是画面卡顿 ...

  4. android textwatcher 延时,Java-防止两次在android的textwatcher中运行

    即时通讯与android的TextWatcher一起执行此操作:用户输入时,保存键入的内容,保存后,在Edittext中更改字符.例如,我有一个常量文本,例如" hi im happy&qu ...

  5. android闹钟延时,android闹钟定时启动延时或者直接不启动

    自己写的android闹钟功能,需要实现timepicker选择完成后将选择的时间设定为闹钟的启动时间,但是不管怎么改总是没法定时启动 alertDialog = new AlertDialog.Bu ...

  6. android实现延时的方法,Android实现延时总结

    在开发中我们会经常遇到延时操作,为了方便在这里做一下总结 1 使用线程休眠实现延时操作 new Thread(){ @Override public void run() { super.run(); ...

  7. windows7怎么安装android,win7系统安装Android SDK的操作方法

    很多小伙伴都遇到过对win7系统安装Android SDK进行设置的困惑吧,一些朋友看过网上对win7系统安装Android SDK设置的零散处理方法,并没有完完全全明白win7系统安装Android ...

  8. android studio升级的步骤,win7系统更新Android Studio的操作方法

    很多小伙伴都遇到过对win7系统更新Android Studio进行设置的困惑吧,一些朋友看过网上对win7系统更新Android Studio设置的零散处理方法,并没有完完全全明白win7系统更新A ...

  9. Android 设置延时操作

    一.Handler实现延迟执行 //延时3s执行 new Handler().postDelayed(new Runnable() {@Overridepublic void run() {// TO ...

最新文章

  1. Computer OS系统基本原理
  2. TypeReference -- 让Jackson Json在List/Map中识别自己的Object
  3. ffmpeg 怎么处理udp音频_视音频数据处理入门:UDP-RTP协议解析
  4. HDU2586(最近公共祖先的Tarjan算法)
  5. 5.15 vs2019 静态编译_xmake v2.3.8 发布, 新增 Intel C++/Fortran 编译器支持
  6. PLC编程技术的发展及应用
  7. win11任务栏某些情况下不能自动隐藏问题初探
  8. 安卓模拟PC浏览器发送http请求
  9. 【多目标进化优化】MOEA 的分类
  10. [CVPR 2020] RPM-Net: Robust Point Matching using Learned Features
  11. Google Guava 的 5 个鲜为人知的特性
  12. Jump Crypto:详解五大多链架构的特点与优劣势
  13. Android面试题目及其答案
  14. JavaScript for Qt Quick(QML)-安晓辉-专题视频课程
  15. 陈一舟:社交网络将彻底颠覆广告业
  16. 每天坚持多一点,美丽就能多一点
  17. 2019最新WEB前端从入门到资深专家课程全套
  18. 有没有免费将XPS转Word的方法
  19. java用虹软人脸识别SDK实现人脸识别,运行ArcSoft的Java版本Demo出错,未检出人脸
  20. MEMS惯性传感器的性能及校准

热门文章

  1. epsxe安卓最新版下载_ePSXe模拟器下载-ePSXe安卓中文版下载-电玩咖
  2. 【财务管理论文】大数据背景下企业财务管理的挑战与机遇(节选)
  3. ansys workbench收敛判断
  4. 爬虫爬取快递100网查快递信息
  5. Android之九宫格解锁的实现
  6. 要买还未买的书单——持续更新
  7. microsoft outlook “未读邮件”收藏夹被误删
  8. vivado编译出错 [Synth 8-729] [Synth 8-787]解决方法
  9. 【商业数据分析】CPC广告投放系统的要素介绍
  10. matlab的estimate函数,matlab的estimate函数输出值什么意思 [fit3 varcov logL info]=estimate(mdl,a)...