Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Handler 消息機制的日常開發運用與代碼測試

Android Handler 消息機制的日常開發運用與代碼測試

編輯:關於Android編程

很多時候我們需要對每個組件或者所有的UI線程要去負責View的創建並且維護它,例如更新冒個TextView的顯示,都必須在主

線程中去做,我們不能直接在UI線程中去創建子線程,要利用消息機制:handler

本篇博客將帶大家走進我們熟悉的Handler,順帶寫了一個例子來驗證Handler的消息機制,Handler通過對子線程的處理,實

現對UI的更新等操作

private TextView time;
            private Handler handler = new Handler(){
            	public void handleMessage(Message msg) {
            		if(msg.what==Reflsh){
            			time.setText(String.valueOf(msg.obj));
            		}
            		super.handleMessage(msg);
            	};
            };
            @Override
            public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            text = getResources().getStringArray(R.array.array);
            for(int i=0;i map = new HashMap();
            	map.put("img", icon[i]);
            	map.put("name", text[i]);
            	list.add(map);
            }
            adapter = new SimpleAdapter(getActivity(), list, R.layout.log, new String[]{"img","name"}, new int []{R.id.g_icon,R.id.g_text});
            }
			@Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
            		Bundle savedInstanceState) {
            	 View view = inflater.inflate(R.layout.fragment_shouye, container, false) ;
            	 gridview = (GridView)view.findViewById(R.id.gridView);
            	 time = (TextView)view.findViewById(R.id.time);//時間
            	 ImageView icon = (ImageView)view.findViewById(R.id.icon);//頭像
            	 TextView name = (TextView)view.findViewById(R.id.name);//昵稱
//            	 
   				File file = new File(Environment.getExternalStorageDirectory()+"/"+"weiinfo") ;
   				BufferedReader reader = null ;
   				String line = null ;
   				try {
   					 reader = new BufferedReader(new FileReader(file)) ;
   					 line = reader.readLine() ;
   				} catch (Exception e) {
   					e.printStackTrace();
   				}
   	          	 data = line.split("\\*") ;
            	 
            	 Picasso.with(getActivity().getApplicationContext()).load(data[5]).into(icon);
            	 name.setText(data[0]);
            	 new Thread(new Runnable() {
					@Override
					public void run() {
						try {
							while(true){
							Thread.sleep(1000);
							Message msg = new Message();
							msg.what = Reflsh;
							msg.obj = new Date(System.currentTimeMillis()).toLocaleString();
							Log.d("XXXXXXXXXXXXXX", msg.obj.toString());
							handler.sendMessage(msg);
							}
						} catch (Exception e) {
							Log.d("異常", ""+e);
						}
					}
				}).start();

上面測試Handler的代碼是來自MaoZhuaWeiBo的首頁界面的動態北京時間演示,我寫了一個Handler來處理我new 出來的子線程,在子線程裡我每休眠一秒執行獲取一次模擬器當前系統時間,並且將消息發送至Handler處理,Handler將消息更新view同步更新,並且不會阻塞主UI,這就是Handler消息機制的好處!


消息機制打印結果:



一直到關閉這個應用程序為止,打印結果才會停止,這就是Handler的消息機制了~


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved