Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android刷新UI的幾種方式總結

android刷新UI的幾種方式總結

編輯:關於Android編程

首先,android的UI刷新是在主線程(UI線程)中完成的。四大組件中,activity和service運行在主線程中。現在總結自己在項目中常用到的UI刷新方式。

第一,利用子線程發消息刷新UI。

子線程負責處理UI需要的數據,然後發消息到主線程來刷新UI。代碼結構如下:

new Thread(new Runnable() {
					
					@Override
					public void run() {
						Person person=new Person();
						person.setName(mName.getText().toString().trim());
						person.setPhone(mPhone.getText().toString().trim());
						Log.i("person",person.toString());
						DatabaseInfoFactory.getPersonDao(mContext).addPerson(person);
						Looper.prepare();
						Message msg=Message.obtain();
						msg.what=0x123456;
						handler.sendMessage(msg);
						Looper.loop();
						
					}
				}).start();


主線程中:

private Handler mHandler=new Handler(){

		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
			super.handleMessage(msg);
			if(msg.what==0x123456||msg.what==0x123){
				fillData();
			setListener();
		}
		
		
	}
	};

第二,利用異步任務更新UI。代碼結構如下:

new AsyncTask() {

		

			@Override
			protected void onPostExecute(Void result) {
				
				if(mAdapter==null){
					mAdapter=new LeaveInfoAdapter();
					//設置數據適配器
					mLVleaveInfos.setAdapter(mAdapter);
					Log.i("測試", "異步任務顯示後台獲得數據庫數據");
					}
				else {
					mAdapter.notifyDataSetChanged();
					
				}
				
				
				
				super.onPostExecute(result);
			}

			@Override
			protected Void doInBackground(Void... params) {
				//獲得要顯示的數據
				mleaveInfos=mLeaveInfosDao.findAll();
				if (mleaveInfos==null) {
					Toast.makeText(HomeActivity.this,"請假數據不存在或是已經清除!", 500).show();
					
					
				}
				
				Log.i("測試", "異步任務後台獲得數據庫數據"+mleaveInfos.size());
				
				return null;
			}
		}.execute();


第三,利用配置文件+activity的生命周期方法刷新UI。




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