android刷新UI的几种方式总结

首先,android的UI刷新是在主线程(UI线程)中完成的。四大组件中,activity和service运行在主线程中。现在总结自己在项目中常用到的UI刷新方式。

第一,利用子线程发消息刷新UI。

子线程负责处理UI需要的数据,,然后发消息到主线程来刷新UI。代码结构如下:

new Thread(new Runnable() {@Overridepublic 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(){@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);if(msg.what==0x123456||msg.what==0x123){fillData();setListener();}}};第二,利用异步任务更新UI。代码结构如下:

new AsyncTask<Void,Void,Void>() {@Overrideprotected void onPostExecute(Void result) {if(mAdapter==null){mAdapter=new LeaveInfoAdapter();//设置数据适配器mLVleaveInfos.setAdapter(mAdapter);Log.i("测试", "异步任务显示后台获得数据库数据");}else {mAdapter.notifyDataSetChanged();}super.onPostExecute(result);}@Overrideprotected 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。

生气是拿别人做错的事来惩罚自己

android刷新UI的几种方式总结

相关文章:

你感兴趣的文章:

标签云: