Android学习笔记(11)-开始做一个数独游戏[下]
来源:互联网 发布:月薪15万的程序员 编辑:程序博客网 时间:2024/05/29 08:32
继续,最后再讨论一下定时器的实现。
本来很简单的一件事,直接用java.util.timer应该就够用了,但是发现在它的task中无法去invalidate我们的MainView,很郁闷。这一点的处理说明Android还是相对线程安全的。
折腾良久,明白了非得再做一个Handler,才能在线程中操作界面元素。所以,代码比brew复杂了一点。
先还是用Timer和TimerTask来做,如下:
public TimerHandler timerHandler;
public Timer timer;
public MyTimerTask task;
... ...
timer=new Timer(true);
task=new MyTimerTask(this);
... ...
那个MyTimerTask是MainActivity的一个内嵌类,实现如下:
private class MyTimerTask extends TimerTask
...{
private MainActivity me;
private int a=0;
public MyTimerTask(MainActivity p)...{
me=p;
}
public void run()...{
me.gridView.time++;
Log.d("MyTask",Integer.toString(me.gridView.time));
timerHandler.sendEmptyMessage(0);
}
}
这里做两件事,一是将gridView中的time加一,二是发送一个消息通知timerHandler。原来我在这里直接让MainView去刷新屏幕,发现不行,所以就改成这样处理了。
然后就是如何实现TimerHandler类的,也不复杂,就是让它去刷新一下屏幕即可。
public class TimerHandler extends Handler ...{
private MainView me;
public TimerHandler(MainView m)...{
me=m;
}
@Override
public void handleMessage(Message msg) ...{
Log.d("Ti",msg.toString());
me.invalidate();
}
}
如此一来,就顺了。
在MainView中的onDraw,根据当前的time值显示成00:00:00的格式即可。
另外,发现Android的模拟器运算速度不如BREW的模拟器,相当的慢。
- Android学习笔记(11)-开始做一个数独游戏[下]
- Android学习笔记(11)-开始做一个数独游戏[下]
- Android学习笔记(10)-开始做一个数独游戏[中]
- Android学习笔记(12)-开始做一个数独游戏[补充]
- Android学习笔记(9)-开始做一个数独游戏[上]
- Android学习笔记(10)-开始做一个数独游戏[中]
- Android学习笔记(12)-开始做一个数独游戏[补充]
- Symbian学习笔记(8):再尝试着做一个数独游戏
- 使用HTML5的drag&drop做一个数独游戏
- 使用HTML5的drag&drop做一个数独游戏
- Android数独游戏01
- Android数独游戏02
- Android数独游戏03
- Android数独游戏04
- android数独游戏机器人
- Android 游戏开发之 数独游戏
- android开发——数独游戏
- Android自定义View的数独游戏
- JAVA基础 (JAVA中的STATIC块)
- Android学习笔记(9)-开始做一个数独游戏[上]
- 《把时间当作朋友》读书笔记
- Android学习笔记(10)-开始做一个数独游戏[中]
- 十进制数转换为非十进制书
- Android学习笔记(11)-开始做一个数独游戏[下]
- 解决TCP网络传输“粘包”问题
- ibatis
- Hibernate复合主键例子
- Android学习笔记(12)-开始做一个数独游戏[补充]
- LOAD DATA INFILE 语法
- Abstract MockEJB
- 学用计算机英语的良好习惯
- 如何从DLL或者DEF文件生成LIB文件