編輯:關於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(); } } };
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- 整個自定義控件其實就是一個ArcMenu .(半圓形那一圈),左下角的圖標沒有加入進控件中。 2- 我基於他的類改了點。他是將左下角的關閉ic
Android Gradle Build Error:Some file crunching failed, see logs for details解決辦法錯誤日志:E
在Android中關於日期時間的類有TimePicker、DatePicker、TimePickerDialog、DatePickerDial
第1節 選擇Arduino開發板1.1 Arduino是什麼對Arduino,官方有一堆解釋。作為一個軟件程序猿,在我眼裡,Arduino是學習“可怕硬件&r