Android定时器Demo
这几天一直忙简历和面试。都没敲代码。
面试四家,都没消息。
周五,估计没面试电话,还是静下来敲代码吧。
练习下定时器,要不要说想写个天气预报。。。
好吧,看看能不能坚持下来。加油,骚年。
准备使用服务,定时器请求天气数据,以前只是听,从来没写过定时器代码,看看网上demo 一次搞定。
注释感觉还可以,贴代码:
1 package com.wangyyworks.weatherworks; 2 3 import java.util.Timer; 4 import java.util.TimerTask; 5 6 import android.os.Bundle; 7 import android.os.Handler; 8 import android.os.Message; 9 import android.app.Activity; 10 import android.content.res.ColorStateList; 11 import android.graphics.Color; 12 import android.view.Menu; 13 import android.view.View; 14 import android.widget.TextView; 15 import android.widget.Toast; 16 17 /** 18 * 2013-6-7 13:36:59 19 * 定时器练习 20 * @author wang_xiaohao 21 * 22 */ 23 public class HomeActivity extends Activity { 24 25 private Handler handler;// 创建Handler; 26 public final int TIMETASKDEME = 1;// Message 为1时候 更新UI 文字 27 private TextView cheangetext; 28 private int time = 1; 29 private boolean isTimeStart;//添加标记,方式多次开启定时器,时间会乱。。。。 30 31 @Override 32 protected void onCreate(Bundle savedInstanceState) { 33 super.onCreate(savedInstanceState); 34 setContentView(R.layout.activity_home); 35 36 inteId(); 37 38 /** 39 * Handler 更新UI 40 */ 41 handler = new Handler() { 42 43 @Override 44 public void handleMessage(Message msg) { 45 // TODO Auto-generated method stub 46 super.handleMessage(msg); 47 switch (msg.what) { 48 case 1: 49 cheangetext.setTextColor(Color.RED); 50 cheangetext.setText("每隔一秒更新一次,这是第" + time++ + "秒了~"); 51 break; 52 } 53 super.handleMessage(msg); 54 } 55 56 }; 57 58 }; 59 60 /** 61 * 加载ID findviewbyid 62 */ 63 private void inteId() { 64 // TODO Auto-generated method stub 65 66 cheangetext = (TextView) findViewById(R.id.cheangetext); 67 68 } 69 70 @Override 71 public boolean onCreateOptionsMenu(Menu menu) { 72 // Inflate the menu; this adds items to the action bar if it is present. 73 getMenuInflater().inflate(R.menu.activity_home, menu); 74 return true; 75 } 76 77 /** 78 * 2013-6-7 13:00:0 测试定时器,服务后期定时请求数据 79 * 80 * @param view 81 */ 82 public void timetask(View view) { 83 84 85 86 if (!isTimeStart) { 87 Toast.makeText(getApplicationContext(), "开启定时器每一秒执行一次", 0).show(); 88 89 // 创建定时器 90 TimerTask task = new TimerTask() { 91 92 @Override 93 public void run() { 94 // TODO Auto-generated method stub 95 Message message = new Message(); 96 message.what = 1; 97 handler.sendMessage(message); 98 } 99 }; 100 101 Timer timer = new Timer(true); 102 timer.schedule(task, 1000, 1000); // 延时1000ms后执行,1000ms执行一次 103 } 104 105 isTimeStart = true;//修改标记为true,防止第二次开启; 106 107 } 108 109 }
第一次出现问题,多次点击后数字乱了。。。
添加了标记:isTimeStart搞定。
布局一个button 一个textview
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".HomeActivity" > <Button android:onClick="timetask" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="测试定时器" /> <TextView android:id="@+id/cheangetext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="40sp" android:text="显示文字" /> </LinearLayout>
接下来,该请求数据了。。。
顺带make下 miui 截图位置:I:\MIUI\screen_cap
加油,不然媳妇都娶不来,骚年。
截个图: