多线程handler的使用——3秒钟更换一次标题
对于多线程我们已经有了些许认识,现在就对其进一步的学习应用吧。
把它用在android中实现标题的更换(3秒更换一次):
只需要编写Activity实现即可,这里有两种方法,可以根据自己习惯选择使用(个人较喜欢第一种):
(1)Runnable:
public class MainActivity extends Activity {private int count = 1;private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {switch (msg.what) {case 1:updateTitle();break;default:break;}}};@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);new Thread(new TitleThread()).start();}protected void updateTitle() {setTitle("my bolg" + count++);}class TitleThread implements Runnable {@Overridepublic void run() {while (true) {Message message = new Message();message.what = 1;handler.sendMessage(message);try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}}}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}
(2)Timer:
public class TimerActivity extends Activity {private int count=1;private Handler handler=new Handler(){public void handleMessage(android.os.Message msg){switch(msg.what){case 1:updateTitle();break;default:break;}}}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_timer); Timer timer=new Timer();timer.scheduleAtFixedRate(new TimerTask() {@Overridepublic void run() {Message message=new Message();message.what=1;handler.sendMessage(message);}}, 1000,3000); } protected void updateTitle() {setTitle("hello"+(count++));}@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_timer, menu); return true; } }
是不是很简单,你喜欢哪一种呢?
快试试吧!