編輯:關於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解決辦法
Android Gradle Build Error:Some file crunching failed, see logs for details解決辦法錯誤日志:E
Android TimePicker
在Android中關於日期時間的類有TimePicker、DatePicker、TimePickerDialog、DatePickerDial
手把手教你做藍牙小車(一)
第1節 選擇Arduino開發板1.1 Arduino是什麼對Arduino,官方有一堆解釋。作為一個軟件程序猿,在我眼裡,Arduino是學習“可怕硬件&r