本文实例讲述了Android实现在子线程中更新Activity中UI的方法。分享给大家供大家参考,具体如下:
在Android平台下,进行多线程编程时,经常需要在主线程之外的一个单独的线程中进行某些处理,然后更新用户界面显示。但是,在主线线程之外的线程中直接更新页面显示的问题是:系统会报这个异常:
ERROR/AndroidRuntime(1222): android.view.ViewRoot$CalledFromWrongThreadException: Only the original
前言
在android开发中,界面UI的更新都是在主线程来完成的。线程分为主线程(Main Thread,简称MT)和工作线程(Work Thread,简称WT),我们通常会在WT中执行一些比较耗时的操作,比如下载,网络,缓存等,然后在将结果发送给MT进行UI的更新操作。如果是在WT进行UI的更新,则会抛出异常,android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created
在我 2004年1月 的专栏里,我讨论了如何利用委托(Delegate)实现异步执行一个方法。当时,我展示了如何在一个 Windows Form 应用内部通过调用一个委托对象的 BeginInvoke()方法来实现一个异步的方法调用。你也许还记得我是如何设置一个回调(Callback)方法,并让上述的异步方法在执行完毕后自动地触发这个回调方法。但现在我要停下来说一说如何更新UI(User Interface,用户界面),让用户知道这个工作已经完成。
关键字:ui,thread,线程,界面