写惯java的人可能会认为Timer的使用应该如下:
程序功能很简单:10秒后,SetTitle为“hear me?”,然后,实际上这样做是不行的,这跟Android的线程安全有关!
- packagecom.ray.test;
- importjava.util.Timer;
- importjava.util.TimerTask;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- publicclassJavaTimerextendsActivity{
- Timertimer=newTimer();
- TimerTasktask=newTimerTask(){
- publicvoidrun(){
- setTitle("hearme?");
- }
- };
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- timer.schedule(task,10000);
- }
- }
但实际上的用法应该通过配合Handler来实现timer功能的!
- packagecom.ray.test;
- importjava.util.Timer;
- importjava.util.TimerTask;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.os.Handler;
- importandroid.os.Message;
- publicclassTestTimerextendsActivity{
- Timertimer=newTimer();
- Handlerhandler=newHandler(){
- publicvoidhandleMessage(Messagemsg){
- switch(msg.what){
- case1:
- setTitle("hearme?");
- break;
- }
- super.handleMessage(msg);
- }
- };
- TimerTasktask=newTimerTask(){
- publicvoidrun(){
- Messagemessage=newMessage();
- message.what=1;
- handler.sendMessage(message);
- }
- };
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- timer.schedule(task,10000);
- }
- }