android更新ui,Android更新UI

Android更新UI界面的几种方法的使用

1. 利用Android Handler机制和message消息传递

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网页空间、营销软件、网站建设、茄子河网站维护、网站推广。

我们知道 , Android Handler机制主要用作线程之间的通信,为了易于理解,我们暂不考虑每个线程的Looper问题。UI更新一般是在主线程中完成的,而Handler就是定义在主线程中,然后通过在Handler构造方法中重写HandlerMessage()方法,来处理有其他线程(子线程)传递过来的消息,从而达到更新UI的目的。相应的,在其他线程(子线程)中,我们通过SendMessage(message)方法来传递消息。

2.利用Android Handler机制和post

这个比较容易理解,也是UI更新常用的方法。 在一个新建的线程中进行更新界面的操作,然后在主线程中利用mHandler.post(Runnable runnable)来达到更新界面的目的,其中mHandler是在主线程中定义的。

3、通过runOnUiThread()方法来实现

class MyThread extends Thread{

@Override

public void run() {

// TODO Auto-generated method stub

super.run();

//数据处理

//...

runOnUiThread(new new Runnable() {

public void run() {

//刷新界面

list.add(dog);

adapter.notifyDataSetChanged();

}

}

})

}

Android更新Ui的几种方法和见解

利用Looper更新UI界面

2.AsyncTask利用线程任务异步更新UI界面

3.利用Runnable更新UI界面

android中如何实现UI的实时更新

1、在主线程中启动一个子线程

首先,我们需要在主线程中启动一个子线程,这个比较简单,直接在MainActivity的onCreate()方法中调用如下方法即可:

new Thread(mRunnable).start();

2、在子线程中发送Message给Handler

在创建子线程时,我们使用了Runnable接口对象mRunnable。这里,只需要实现Runnable接口,并重写该接口的run()方法,在run()方法中实现每1秒发送一条Message给Handler即可。具体实现方法如下:

/*

* Function   :   实现run()方法,每1秒发送一条Message给Handler

*/

private Runnable mRunnable = new Runnable() {

public void run() {

while(true) {

try {

Thread.sleep(1000);

mHandler.sendMessage(mHandler.obtainMessage());

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

};

3、Handler接收Message通知

最后,我们创建一个Handler对象,用来接收Message通知。在收到Message通知后,完成刷新UI的操作即可。具体实现方法如下:

/*

* Function   :   实现handleMessage()方法,用于接收Message,刷新UI

*/

private Handler mHandler = new Handler() {

public void handleMessage(Message msg) {

super.handleMessage(msg);

refreshUI();

}

};

4、刷新UI

由以上的代码可以看出,刷新UI的操作,我们是放在refreshUI()方法中来完成的。refreshUI()方法的实现也很简单,调用HttpUtils工具类中的getInputStream()方法,获得图1所示Web工程的页面内容输入流,再将该输入流转化为字符串,放入TextView控件中进行显示即可。具体实现方法如下:

/*

* Function   :   刷新UI

*/

private void refreshUI() {

try {

InputStream inputStream = HttpUtils.getInputStream();

String resultData = HttpUtils.getResultData(inputStream);

mTextView.setText(resultData);

} catch (IOException e) {

e.printStackTrace();

}

}

android怎么更新UI

首先,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 AsyncTaskvoid,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();/void,void,void

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


网站名称:android更新ui,Android更新UI
标题路径:http://myzitong.com/article/dsdjpoo.html