我是靠谱客的博主 有魅力蓝天,这篇文章主要介绍android刷新UI的几种方式总结,现在分享给大家,希望可以做个参考。

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

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

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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();


主线程中:

复制代码
1
2
3
4
5
6
7
8
9
10
11
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。代码结构如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
new AsyncTask<Void,Void,Void>() { @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。




最后

以上就是有魅力蓝天最近收集整理的关于android刷新UI的几种方式总结的全部内容,更多相关android刷新UI内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部