Android之延时操作方法
整理常见的延时处理方法,作为记录。
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之延时操作方法相关推荐
- arcgis for android离线编辑,操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容...
操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容 摘要 Collector for ArcGIS 会将离线副本存储在 SQLite 数 ...
- android 动画延时执行,Android Animation --ScaleAnimation
ScaleAnimation 缩放动画效果 是安卓中的动画效果之一 相关构造初始化方法 ScaleAnimation scale =new ScaleAnimation(Context contex ...
- Android 视频播放延时抖动那些事
一.背景 局域网模式下,Android手机播放相机视频流,使用Android 自带MediaCodec解码,视频延时较大,约700ms左右.使用FFmpeg软解+转码,延时200ms左右,但是画面卡顿 ...
- android textwatcher 延时,Java-防止两次在android的textwatcher中运行
即时通讯与android的TextWatcher一起执行此操作:用户输入时,保存键入的内容,保存后,在Edittext中更改字符.例如,我有一个常量文本,例如" hi im happy&qu ...
- android闹钟延时,android闹钟定时启动延时或者直接不启动
自己写的android闹钟功能,需要实现timepicker选择完成后将选择的时间设定为闹钟的启动时间,但是不管怎么改总是没法定时启动 alertDialog = new AlertDialog.Bu ...
- android实现延时的方法,Android实现延时总结
在开发中我们会经常遇到延时操作,为了方便在这里做一下总结 1 使用线程休眠实现延时操作 new Thread(){ @Override public void run() { super.run(); ...
- windows7怎么安装android,win7系统安装Android SDK的操作方法
很多小伙伴都遇到过对win7系统安装Android SDK进行设置的困惑吧,一些朋友看过网上对win7系统安装Android SDK设置的零散处理方法,并没有完完全全明白win7系统安装Android ...
- android studio升级的步骤,win7系统更新Android Studio的操作方法
很多小伙伴都遇到过对win7系统更新Android Studio进行设置的困惑吧,一些朋友看过网上对win7系统更新Android Studio设置的零散处理方法,并没有完完全全明白win7系统更新A ...
- Android 设置延时操作
一.Handler实现延迟执行 //延时3s执行 new Handler().postDelayed(new Runnable() {@Overridepublic void run() {// TO ...
最新文章
- Computer OS系统基本原理
- TypeReference -- 让Jackson Json在List/Map中识别自己的Object
- ffmpeg 怎么处理udp音频_视音频数据处理入门:UDP-RTP协议解析
- HDU2586(最近公共祖先的Tarjan算法)
- 5.15 vs2019 静态编译_xmake v2.3.8 发布, 新增 Intel C++/Fortran 编译器支持
- PLC编程技术的发展及应用
- win11任务栏某些情况下不能自动隐藏问题初探
- 安卓模拟PC浏览器发送http请求
- 【多目标进化优化】MOEA 的分类
- [CVPR 2020] RPM-Net: Robust Point Matching using Learned Features
- Google Guava 的 5 个鲜为人知的特性
- Jump Crypto:详解五大多链架构的特点与优劣势
- Android面试题目及其答案
- JavaScript for Qt Quick(QML)-安晓辉-专题视频课程
- 陈一舟:社交网络将彻底颠覆广告业
- 每天坚持多一点,美丽就能多一点
- 2019最新WEB前端从入门到资深专家课程全套
- 有没有免费将XPS转Word的方法
- java用虹软人脸识别SDK实现人脸识别,运行ArcSoft的Java版本Demo出错,未检出人脸
- MEMS惯性传感器的性能及校准
热门文章
- epsxe安卓最新版下载_ePSXe模拟器下载-ePSXe安卓中文版下载-电玩咖
- 【财务管理论文】大数据背景下企业财务管理的挑战与机遇(节选)
- ansys workbench收敛判断
- 爬虫爬取快递100网查快递信息
- Android之九宫格解锁的实现
- 要买还未买的书单——持续更新
- microsoft outlook “未读邮件”收藏夹被误删
- vivado编译出错 [Synth 8-729] [Synth 8-787]解决方法
- 【商业数据分析】CPC广告投放系统的要素介绍
- matlab的estimate函数,matlab的estimate函数输出值什么意思 [fit3 varcov logL info]=estimate(mdl,a)...