postDelayed方法和removeCallbacks方法的使用
2016-03-16 17:22
417 查看
《Android学习精要》第6章Broadcast、Service服务及Handle对象,本章介绍Android的核心组件Service,通过Service这种技术可以在系统的后台进行一些隐藏性任务的执行,前台用户并不会体会到程序在运行,这种技术通常用在一些计划任务中,Android的4大组件Service在实现这一功能时的使用率非常高,而要实现一个功能完善的软件不可能不用到Service。本节为大家介绍postDelayed方法和removeCallbacks方法的使用。
AD:51CTO技术沙龙 | 赋予APP不同凡响的交互和体验>>
6.4.2 postDelayed方法和removeCallbacks方法的使用(1)
方法postDelayed的作用是延迟多少毫秒后开始运行,而removeCallbacks方法是删除指定的Runnable对象,使线程对象停止运行。
方法声明如下:
其中参数Runnable r在Handler对象所运行的线程中执行。
创建名称为handler2的Android项目,Main.java的核心代码如下:
程序运行后单击button1按钮开始循环,count累加1,运行结果如图6.41所示。
AD:51CTO技术沙龙 | 赋予APP不同凡响的交互和体验>>
6.4.2 postDelayed方法和removeCallbacks方法的使用(1)
方法postDelayed的作用是延迟多少毫秒后开始运行,而removeCallbacks方法是删除指定的Runnable对象,使线程对象停止运行。
方法声明如下:
public final boolean postDelayed (Runnable r, long delayMillis)
其中参数Runnable r在Handler对象所运行的线程中执行。
创建名称为handler2的Android项目,Main.java的核心代码如下:
public class Main extends Activity { private Button button1; private Button button2; private Handler handler = new Handler(); private int count = 0; private Runnable runnableRef = new Runnable() { public void run() { Log.v("2", Thread.currentThread().getName()); count++; Log.v("!", "count=" + count); handler.postDelayed(runnableRef, 1000); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.v("1", Thread.currentThread().getName()); button1 = (Button) this.findViewById(R.id.button1); button2 = (Button) this.findViewById(R.id.button2); button1.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { Thread thread = new Thread(runnableRef); thread.start(); Log.v("!!!!!!!!!!!!!", "end"); } }); button2.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { handler.removeCallbacks(runnableRef); } }); } }
程序运行后单击button1按钮开始循环,count累加1,运行结果如图6.41所示。
图6.41 循环加1效果 |
相关文章推荐
- EMC整改报告-待续
- github 同步 fork
- js 加载更多时,自动执行加载更多的方法。
- 阿里笔试题(2015)持续更新中
- ios一个自定义的下拉多选菜单
- linux --> 计算机是如何启动的?
- angular.js学习笔记(一)
- 为什么抽象类不能实例化的解释
- C语言第零篇:C语言学习
- JDBC 基础核心代码
- 猜生日_蓝桥杯题目_最简版
- Android Activity启动绘制流程
- 圆角label
- 自定义Log输出
- JAVA利用HttpClient进行POST和GET请求(HTTPS)
- ios屏幕适配-sizeclass
- PyCharm 教程(七)管理解释器及第三方模块、包
- 虚拟机Ubuntu上安装gitlab
- (div里有input 的时候)JQ为什么给div添加类没有效果呢???
- 2016-03-16 sdwebimage