第三十四讲:Android Timer计时器 - 火箭發射為例
http://blog.csdn.net/mylzc/article/details/6736988 转载系列:
Android异步处理系列文章索引Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Looper+MessageQueue深入详解Android异步处理四:AsyncTask的实现原理
Android觀念篇:
1.Android的thread跟Java的thread大同小異,不同的是 Java是從public static void main(String args[]){
}作為一個程式的開頭再去呼叫其他method跟class
Android呼叫class 跟 method間交互應用也是相同,唯一不同的是
Android有四大元件Activity , Service , BroadcastReceiver , Content Provider等
各種元件有各自對應的生命週期,所以情境應用上比Java複雜多了
又舉例來說 Android會用handler來作為UI更新
2.在Android中只要執行會超過5秒的程序,就需要使用thread / handler來處理
3.Thread 裡是無法做任何有關介面的事,所以我們必須倚賴 Handler,可以把它想成介面與執行緒之間的經紀人。
在Android運用到執行序中會有兩種情況
一種是
一次性
Thread thread=new Thread(new Runnable() { @Override public void run() { } });thread.start();//開始執行緒
//想暫停的時候
thread.sleep(3000);//毫秒的意思 3000就是3秒 以此類推
//最後不用時
thread.stop();//停止執行緒
常駐性
//new一個執行緒,progressBar每秒增加5 ,到100%時停止Thread mThread = new Thread(new Runnable() { public void run() { Message message; String obj="run"; for(int i=0 ; i < 20; i++){ try{ threadCount = (i + 1) * 5; Thread.sleep(500); progressBar.setProgress(threadCount); message = handler.obtainMessage(1,obj); handler.sendMessage(message); }catch (Exception e) { e.printStackTrace(); } } } }); mThread.start(); private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) { super.handleMessage(msg); String MsgString = (String)msg.obj; if (MsgString.equals("run")) { //do something if(threadCount>=100){ Toast.makeText(OrderActivity.this,"下載完成!!!!",Toast.LENGTH_SHORT).show(); textView.setText("100%"); }else{ textView.setText(threadCount+"%...."); } }}};Android實務篇:
沒有留言:
張貼留言