在异步线程中更新UI的方法与流程

文档序号:12463066阅读:来源:国知局

技术特征:

1.一种在异步线程中更新UI的方法,其特征在于,包括以下步骤:

创建更新UI的异步线程,包括重写该异步线程的run方法,并通过安卓系统的WindowManager在该异步线程中创建新的根视图rootview;

在异步线程中创建消息循环,包括创建一消息队列,用于阻塞该异步线程的run方法,并防止该异步线程中的根视图rootview被销毁;还包括添加逻辑:如果有UI刷新的操作,则在异步线程中进行刷新;若无,则保持等待状态;

将UI更新操作的消息发送到消息队列,并在异步线程中更新UI。

2.根据权利要求1所述的方法,其特征在于,在创建异步线程循环中,若无UI刷新操作,则使异步线程让出所占用的系统CPU。

3.根据权利要求1所述的方法,其特征在于,所述消息队列采用MessageQueue,其为安卓系统提供的基于epoll的阻塞队列。

4.根据权利要求1所述的方法,其特征在于,步骤“创建异步线程循环”具体通过安卓系统中的Looper工具提供的prepare方法来创建当前线程的 Looper对象,当prepare方法调用后,通过调用 Looper 对象的loop方法创建消息队列并且处于等待状态,则在取消消息队列之前,该异步线程的run方法一直处于运行状态, 同时在没有UI刷新操作时,让出所占用的CPU。

5.根据权利要求4所述的方法,其特征在于,所述消息队列具体通过安卓系统提供的Handler工具来处理,将Handler对象绑定到指定的Loop对象中,当需要发送更新UI操作时,直接调用handler对象的post方法,对异步线程的UI进行各种控制。

6.根据权利要求1所述的方法,其特征在于,步骤“创建新的根视图rootview”具体包括:

通过安卓系统中的context调用其getSystemService方法,获取系统的窗口服务,并返回一个 WindowManger 对象;

创建一个布局作为异步UI的根视图rootview,然后调用 WindowManger 的addview方法, 将创建的根视图 rootview添加进去。

7.根据权利要求6所述的方法,其特征在于,调用addview方法时需要传入WindowManager.LayoutParams对象,该对象中包括分别用来设置根视图布局layout宽高的成员winth和成员height,该对象中还包括format 成员以及表示窗体类型的type。

8.根据权利要求7所述的方法,其特征在于,所述窗体类型与主线程保持一致。

9.一种在异步线程中更新UI的系统,其特征在于,包括:

异步线程创建模块,用于创建更新UI的异步线程,包括重写该异步线程的run方法,并通过安卓系统的WindowManager在该异步线程中创建新的根视图rootview;

消息循环创建模块,用于对异步线程创建消息循环,包括创建一消息队列,用于阻塞该异步线程的run方法,并防止该异步线程中的根视图rootview被销毁;还包括添加逻辑:如果有UI刷新的操作,则在异步线程中进行刷新;若无,则保持等待状态;

更新模块,用于将UI更新操作的消息发送到消息队列,并在异步线程中更新UI。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1