Only the original thread that created a view hierarchy can touch its views。原因是android中相关的view和控件不是线程安全的,我们必须单独做处理。我用Handler来解决。


Handler的官方描述:

A Handler allows you to send and processMessageand Runnable objects associated with a thread'sMessageQueue. Each Handler instance is associated with a single thread and that thread's message queue. When you create a new Handler, it is bound to the thread / message queue of the thread that is creating it -- from that point on, it will deliver messages and runnables to that message queue and execute them as they come out of the message queue

Handler的使用场合:

1、to schedule messages and runnables to be executed as some point in the future;

安排messages和runnables在将来的某个时间点执行。

2、 to enqueue an action to be performed on a different thread than your own.

将action入队以备在一个不同的线程中执行。即可以实现线程间通信。比如当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Handler对象,就可以通过该对象向父线程的消息队列发送消息了。由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面。


我的用法是,

声明一个成员变量:private Handler handler=null;

在onCreate()方法里:

handler=new Handler()

{

@Override

public void handleMessage(Message msg)

{

if(msg.arg1==1)

{

adapter=new MovieListAdapter(ListActivity.this,movieInfos);

gridView.setAdapter(adapter);

}

}

};


再设一个线程,调制当处理完毕数据库的操作时再去更新UI。

new Thread(new Runnable(){

@Override

public void run()

{

Message msg=handler.obtainMessage();

movieInfos=movieUtils.getMovieInfos(ListActivity.this);

msg.arg1=1;

handler.sendMessage(msg);

}

}).start();

更多相关文章

  1. Android异步线程与Bundle消息传递
  2. Android(安卓)常用技术框架的基本使用
  3. Android(安卓)Studio——Message
  4. Android(安卓)利用soap协议与服务端进行通信
  5. android用户界面之GridView教程实例汇总
  6. Android(安卓)Webkit简单用例
  7. 【Android(安卓)开发教程】使用Intent发送短信
  8. 8.Swift openURL
  9. Android中横竖屏切换时Activity的生命周期

随机推荐

  1. php大神进阶之try catch
  2. php保留两位小数的几种方法介绍
  3. 想学php编程?那你必看这些书
  4. 一分钟带你了解php和Python的区别
  5. 谈谈​PHP防止XSS跨站脚本攻击的方法
  6. 超简单开发自己的php框架一点都不难!
  7. 详细解说PHP中break、continue、return、
  8. php抽象类和接口之间有什么区别?
  9. PHP中什么是命名空间?为什么使用命名空间?
  10. 一起聊聊php中的传统三层架构