Android 比Timer更好方法
2016-04-21 16:47
513 查看
Android中的Timer一般像下面这样写:
java代码:
Timer timer = new Timer( );
TimerTask task = new TimerTask( ) {
public void run ( ) {
Message message = new Message( );
message.what = 1;
handler.sendMessage(message);
}
};
final Handler handler = new Handler( ) {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
log.e("Timer","Timer");
update( );
break;
}
super.handleMessage(msg);
}
};
protected void onDestroy ( ) {
if (timer != null) {
timer.cancel( );
timer = null;
}
super.onDestroy( );
}
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
timer.schedule(task,1000,5000);
}
最重要的一点是 timer.schedule(task,1000,5000),如果设置为 timer.schedule(task,5000)是不会工作的。
因为timer.schedule(task,5000) 是表示执行一次的任务。
timer.schedule(task,1000,5000)表示 1 秒钟后开始 5 秒钟为周期 重复执行,
更好的方法是通过下面的代码 (Handler加Runnable线程,更简洁)
java代码:
private Handler handler = new Handler( );
private Runnable runnable = new Runnable( ) {
public void run ( ) {
update( );
handler.postDelayed(this,1000);
//postDelayed(this,1000)方法安排一个Runnable对象到主线程队列中
}
};
handler.postDelayed(runnable,1000); // 开始Timer
handler.removeCallbacks(runnable); //停止Timer
java代码:
Timer timer = new Timer( );
TimerTask task = new TimerTask( ) {
public void run ( ) {
Message message = new Message( );
message.what = 1;
handler.sendMessage(message);
}
};
final Handler handler = new Handler( ) {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
log.e("Timer","Timer");
update( );
break;
}
super.handleMessage(msg);
}
};
protected void onDestroy ( ) {
if (timer != null) {
timer.cancel( );
timer = null;
}
super.onDestroy( );
}
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
timer.schedule(task,1000,5000);
}
最重要的一点是 timer.schedule(task,1000,5000),如果设置为 timer.schedule(task,5000)是不会工作的。
因为timer.schedule(task,5000) 是表示执行一次的任务。
timer.schedule(task,1000,5000)表示 1 秒钟后开始 5 秒钟为周期 重复执行,
更好的方法是通过下面的代码 (Handler加Runnable线程,更简洁)
java代码:
private Handler handler = new Handler( );
private Runnable runnable = new Runnable( ) {
public void run ( ) {
update( );
handler.postDelayed(this,1000);
//postDelayed(this,1000)方法安排一个Runnable对象到主线程队列中
}
};
handler.postDelayed(runnable,1000); // 开始Timer
handler.removeCallbacks(runnable); //停止Timer
相关文章推荐
- Android Studio 快捷键
- Android View学习笔记(三):Scroller的原理剖析及使用(上)
- Android Loader详解
- Android Loader详解
- Android Loader详解
- Android官方文档之Introduction
- WebView中JS无法调用Android接口的问题
- OpenCV学习笔记(七)—— OpenCV for Android实时图像处理
- Android刮刮卡实现原理与代码讲解
- AndroidStudio项目提交Github出错
- Android 最新API ViewDragHelper详解及实例
- Android天气预报程序(八)
- Android 关于使用ScrollView和RecyclerView 时候Topbar被隐藏解决方式
- Android创建简单发送和接收短信应用
- 详解Android中Intent传递对象给Activity的方法
- Android开发抢手,如何培养成移动开发高手?
- Android 动画学习(二)
- android 学习资料
- 百度地图学习(一):加载基本地图、本地定位、地理编码
- Android Fragment详解