CN106775699B - 在异步线程中更新ui的方法及系统 - Google Patents
在异步线程中更新ui的方法及系统 Download PDFInfo
- Publication number
- CN106775699B CN106775699B CN201611129759.5A CN201611129759A CN106775699B CN 106775699 B CN106775699 B CN 106775699B CN 201611129759 A CN201611129759 A CN 201611129759A CN 106775699 B CN106775699 B CN 106775699B
- Authority
- CN
- China
- Prior art keywords
- asynchronous thread
- thread
- creating
- asynchronous
- updating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种在异步线程中更新UI的方法,包括以下步骤:创建更新UI的异步线程,包括重写该异步线程的run方法,并通过安卓系统的WindowManager在该异步线程中创建新的根视图rootview;在异步线程中创建消息循环,包括创建一消息队列,用于阻塞该异步线程的run方法,并防止该异步线程中的根视图rootview被销毁;还包括添加逻辑:如果有UI刷新的操作,则在异步线程中进行刷新;若无,则保持等待状态;将UI更新操作的消息发送到消息队列,并在异步线程中更新UI。本发明可以实现UI更新与应用主UI进行完全的隔离。
Description
技术领域
本发明涉及安卓系统中的UI更新,尤其涉及一种在异步线程中更新UI 的方法及系统。
背景技术
在android系统中,每个app运行时系统都会给app分配一个主线程用来处理app自身的刷新操作,如果在主线程中进行一些复杂的耗时处理,就会造成主线程短暂的停顿卡住,给用户造成应用卡顿的感觉,比如进行一些文件的读写操作,网络的访问,数据库的读取等,并且在android中如果主线程停顿时间过长,系统会直接给出ANR,造成对用户的体验大打折扣,并且在android高版本上,所以一般在android开发时,需要将这些操作放在异步线程中,等操作好了,再将结果反馈给主线程,通知主线程进行更新UI (User Interface用户界面)的操作。不过某些情况下,可能需要自己实现一个UI的界面,让其更新与主线程分离,所以更新就需要在自己的线程中,而在android中如果直接在异步线程中更新UI的话,会发出系统抛出的异常,使应用挂掉。
目前常规的方法:在异步线程更新UI,其实其基本原理是,在异步线程中将数据获取成功后,然后通过持有主线程消息队列的handler将数据获取成功的消息传递到主线程,然后在主线程进行更新UI,其本质UI的更新操作还是在主线程。以图片异步加载举例,当应用异步加载图片时,首先创建一个异步的线程,然后在该线程中进行耗时的操作(图片的下载过程),当图片下载完成后通过将下载好的图片转成Bitmap对象,然后将消息发送到主线程,主线程中的ImageView将bitmap加载显示出来,创建异步线程可以通过创建Thread对象或者AsyncTask对象(这两个都是在android中创建异步线程的工具类),将异步线程的消息发送到主线程可以通过handler的post方法,或者activity的runOnUiThread方法,其参数都是发送一个runable对象,其实runOnUiThread内部也是调用handler的post方法,也有可以通过 handler的sendMessage方法来进行操作,但是其内部也是通过post方法执行的,从上面描述的原理可以知道,其实常规中异步线程更新UI的本质就是异步线程向主线程发送消息,主线程收到消息后在主线程中更新UI,其根本没有在异步线程中更新UI,前面提到过android中直接在异步线程中更新UI 会抛出异常,导致应用crash,所以常规方法中绕过了这个问题。
发明内容
本发明要解决的技术问题在于针对现有技术中更新UI的方式要么使系统主线程出现短暂的停顿卡住,要么会导致系统抛出异常使应用挂掉的缺陷,提供一种在异步线程更新UI的方法,其能做到与应用主UI进行完全的隔离,更新设置等与主UI互相不干扰,提高用户体验,同时也能有效减轻主线程的压力,分担视图刷新的资源消耗。
本发明解决其技术问题所采用的技术方案是:
提供一种在异步线程中更新UI的方法,包括以下步骤:
创建更新UI的异步线程,包括重写该异步线程的run方法,并通过安卓系统的WindowManager在该异步线程中创建新的根视图rootview;
在异步线程中创建消息循环,包括创建一消息队列,用于阻塞该异步线程的run方法,并防止该异步线程中的根视图rootview被销毁;还包括添加逻辑:如果有UI刷新的操作,则在异步线程中进行刷新;若无,则保持等待状态;
将UI更新操作的消息发送到消息队列,并在异步线程中更新UI。
本发明所述的方法中,在创建异步线程循环中,若无UI刷新操作,则使异步线程让出所占用的系统CPU。
本发明所述的方法中,所述消息队列采用MessageQueue,其为安卓系统提供的基于epoll的阻塞队列。
本发明所述的方法中,步骤“创建异步线程循环”具体通过安卓系统中的Looper工具提供的prepare方法来创建当前线程的Looper对象,当 prepare方法调用后,通过调用Looper对象的loop方法创建消息队列并且处于等待状态,则在取消消息队列之前,该异步线程的run方法一直处于运行状态,同时在没有UI刷新操作时,让出所占用的CPU。
本发明所述的方法中,所述消息队列具体通过安卓系统提供的Handler 工具来处理,将Handler对象绑定到指定的Loop对象中,当需要发送更新UI 操作时,直接调用handler对象的post方法,对异步线程的UI进行各种控制。
本发明所述的方法中,步骤“创建新的根视图rootview”具体包括:
通过安卓系统中的context调用其getSystemService方法,获取系统的窗口服务,并返回一个WindowManger对象;
创建一个布局作为异步UI的根视图rootview,然后调用WindowManger 的addview方法,将创建的根视图rootview添加进去。
本发明所述的方法中,调用addview方法时需要传入WindowManager.LayoutParams对象,该对象中包括分别用来设置根视图布局 layout宽高的成员winth和成员height,该对象中还包括format成员以及表示窗体类型的type。
本发明所述的方法中,所述窗体类型与主线程保持一致。
本发明还提供了一种在异步线程中更新UI的系统,包括:
异步线程创建模块,用于创建更新UI的异步线程,包括重写该异步线程的run方法,并通过安卓系统的WindowManager在该异步线程中创建新的根视图rootview;
消息循环创建模块,用于对异步线程创建消息循环,包括创建一消息队列,用于阻塞该异步线程的run方法,并防止该异步线程中的根视图rootview 被销毁;还包括添加逻辑:如果有UI刷新的操作,则在异步线程中进行刷新;若无,则保持等待状态;
更新模块,用于将UI更新操作的消息发送到消息队列,并在异步线程中更新UI。
本发明产生的有益效果是:本发明通过安卓系统的WindowManager在该异步线程中创建新的根视图rootview,从而创建用于更新UI的异步线程,使其与应用主UI进行完全的隔离,更新设置等与主UI互相不干扰,可以运用在某些复杂容错率比较低的视图上,防止这些视图在运行过程中出现问题干扰到应用本身UI的情况;能有效减轻主线程的压力,分担视图刷新的资源消耗。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例在异步线程中更新UI的方法的流程图;
图2是本发明实施例在异步线程中更新UI系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
先对相关专业术语进行解释如下:
ANR:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR: Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒。
epoll:epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO 事件异步唤醒而加入Ready队列的描述符集合就行了。
单例:保证某个类的对象在程序运行中只存在一个,在后文中的线程单例表明,该对象在线程中只存在一个。
本发明可在android中实现异步线程刷新UI,其能满足在异步线程中创建、显示以及更新UI。
本发明实施例的在异步线程中更新UI的方法,如图1所示,包括以下步骤:
S1、创建更新UI的异步线程,包括重写该异步线程的run方法,并通过安卓系统的WindowManager在该异步线程中创建新的根视图rootview;
S2、在异步线程中创建消息循环,包括创建一消息队列,用于阻塞该异步线程的run方法,并防止该异步线程中的根视图rootview被销毁;还包括添加逻辑:如果有UI刷新的操作,则在异步线程中进行刷新;若无,则保持等待状态;
S3、将UI更新操作的消息发送到消息队列,并在异步线程中更新UI。
步骤S1中,创建一个异步线程UI的环境具体为:
在android中,创建一个异步线程直接通过java提供的Thread类(或者通过Android的AysnTask和HandlerThread创建异步线程),然后重写其run方法就行,run方法中做的处理操作就会运行在当前创建的线程当中,前面提到过,如果直接在android中在异步线程中操作UI系统会抛出异常,然而系统的这个异常的判断是通过比较更新的UI线程与创建其视图根元素(rootview) 是否是同一个线程来判断的,所以为了规避这个判断,这里异步线程也需要创建自己的rootview,可以模拟系统创建UI视图的方法,通过WindowManger创建。首先通过context调用其getSystemService(“window”)方法获取系统的窗口服务,其返回一个WindowManger对象,然后创建一个布局layout作为异步UI的视图根元素rootview,然后调用WindowManger的addview的方法,将创建的rootview添加进去。
1)在调用addview方法时还需要传入另外一个参数,即WindowManager.LayoutParams对象,该对象中有成员winth,height,分别用来设置根视图布局layout的宽高,还有format成员,这里传入为 PixelFormat.RGBA_8888,表示是以RGB8888格式的视图(4个8分别表示A透明度,以及RGB三基色),还有非常重要的成员type表示窗体的类型,虽然这里视图与主线程的视图分开,但是窗体类型还是与主线程保持一致,使用 WindowManager.LayoutParams.TYPE_APPLICATION,表示是应用的类型。
2)布局设置,在根视图rootview设置好了之后,可以把需要放入异步线程的视图传入之中,比如自己定义的布局是layout,直接调用rootview 的addview方法就行,之后想要更新layout,就直接在线程中更新就行。步骤S2中在异步线程中创建循环具体为:
如果直接在异步线程中创建根视图的话,当异步线程的run方法结束时,根视图就会被系统回收销毁,所以这里需要通过创建一个消息队列,让其将 run方法阻塞住,防止其立刻执行完成造成创建好的根视图立即被销毁,然后添加逻辑,如果有UI刷新的操作就在异步线程中进行刷新,如果没有就什么也不做,但是为了性能考率,防止直接通过循环造成系统CPU大量被消耗,这里最好做到当没有消息时,异步线程能让出系统CPU供其他资源使用,所以这里可以使用消息队列MessageQueue,可以理解的是,还可以通过 BlockingQueue来实现。消息队列是android提供的一种基于epoll的阻塞队列, epoll是一种在linxu上的io复用模型,其主要特点就是,在有事件的时候会通知监听者,当没有的话会让出CPU,所以这里通过消息队列MessageQueue 能够很好的利用cpu,在android中对线程创建消息循环可以通过系统提供 Looper工具,Looper工具类中有一个静态的Threadlocal对象,当各个线程其操作时,Threadlocal保证每个线程都有自己的一份该变量,而在Looper中的Threadlocal对象正好存储的是一个Looper对象,所以凡是使用了Looper工具的线程,都持有一个自己的Looper对象,从而保证所谓的线程单例。Looper 类提供prepare方法来创建当前线程的Looper对象,当prepare方法调用后通过调用Looper对象的loop方法创建消息队列并且处于等待状态,这样在取消消息队列之前,线程run方法一直处于运行状态,同时在没有事件时,会让出CPU控制权,节省系统资源。
步骤S3中发送并处理UI更新操作的消息具体为:
在消息循环建立之后,其会一直阻塞,并处于等待状态,所以我们需要将一些更新的消息发送到消息队列,在android中提供了Handler工具来处理消息队列,Handler对象可以绑定到指定的Loop对象中,然后其发送消息就能发到其绑定Loop对象持有的消息队列中,在Handler对象创建时,将2中创建好的Loop对象作为传入进行传入,然后当需要发送更新UI操作时,可以直接调用handler对象的post方法,post方法接收一个实现了runnable接口的对象,runnable接口中有run方法,每个实现了runnable接口的对象都必须实现其run方法,而handler就是将run方法中执行的操作发送到了其Loop 的线程中,所以这里可以将需要更新UI的操作放入到run方法中,通过post 方法发送到消息队列中,然后Loop持有的消息队列从队列中读取一个消息,进行处理就能对异步线程的UI进行各种控制(这里虽然可以通过Handler 进行更新消息,但是这个Handler对与常规方法的对象的区别是,它持有的是异步线程的消息队列,所以所有的UI的更新还是处于异步线程当中,而常规方法中的Handler对象持有的是主线程的消息队列,UI的更新处于主线程中)。
此方法可以运用在动态锁屏的应用当中,动态锁屏应用一般对资源的要求比较大,如果将UI的视图放在主线程中,然后更新的话,可能造成主线程的压力,但是通过本方法的话,可以将锁屏的所有UI元素放入自己创建的异步线程的rootview当中,这样锁屏的所有动态效果都将在异步中进行更新,完全与主线程脱离,从而将达到更加流畅的体验。
本发明实施例在异步线程中更新UI的系统主要为实现上述实施例的方法,如图2所示,包括:
异步线程创建模块10,用于创建更新UI的异步线程,包括重写该异步线程的run方法,并通过安卓系统的WindowManager在该异步线程中创建新的根视图rootview;
消息循环创建模块20,用于对异步线程创建消息循环,包括创建一消息队列,用于阻塞该异步线程的run方法,并防止该异步线程中的根视图rootview 被销毁;还包括添加逻辑:如果有UI刷新的操作,则在异步线程中进行刷新;若无,则保持等待状态;
更新模块30,用于将UI更新操作的消息发送到消息队列,并在异步线程中更新UI。
综上,本发明在异步线程中更新UI的方法,其能做到与应用主UI进行完全的隔离,更新设置等与主UI互相不干扰,可以运用在某些复杂容错率比较低的视图上,防止这些视图在运行过程中出现问题干扰到应用本身UI的情况,同时也能有效减轻主线程的压力,分担视图刷新的资源消耗。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (3)
1.一种在异步线程中更新UI的方法,其特征在于,包括以下步骤:
创建更新UI的异步线程,包括重写该异步线程的run方法,并通过安卓系统的WindowManager在该异步线程中创建新的根视图rootview;具体包括:通过安卓系统中的context调用其getSystemService方法,获取系统的窗口服务,并返回一个WindowManger对象;创建一个布局作为异步UI的根视图rootview,然后调用WindowManger的addview方法,将创建的根视图rootview添加进去;在调用addview方法时还需要传入另外一个参数,即WindowManager.LayoutParams对象,该对象中有成员winth、height,分别用来设置根视图布局layout的宽高、format成员、以及type表示窗体的类型,窗体类型还是与主线程保持一致,使用WindowManager.LayoutParams.TYPE_APPLICATION,表示是应用的类型;
在异步线程中创建消息循环,包括创建一消息队列,用于阻塞该异步线程的run方法,并防止该异步线程中的根视图rootview被销毁;还包括添加逻辑:如果有UI刷新的操作,则在异步线程中进行刷新;若无,则保持等待状态;具体为:通过安卓系统中的Looper工具提供的prepare方法来创建当前线程的Looper对象,当prepare方法调用后,通过调用Looper对象的loop方法创建消息队列并且处于等待状态,则在取消消息队列之前,该异步线程的run方法一直处于运行状态,同时在没有UI刷新操作时,让出所占用的CPU;所述消息队列具体通过安卓系统提供的Handler工具来处理,将Handler对象绑定到指定的Loop对象中,当需要发送更新UI操作时,直接调用handler对象的post方法,对异步线程的UI进行各种控制;
将UI更新操作的消息发送到消息队列,并在异步线程中更新UI。
2.根据权利要求1所述的方法,其特征在于,所述消息队列采用MessageQueue,其为安卓系统提供的基于epoll的阻塞队列。
3.一种在异步线程中更新UI的系统,其特征在于,包括:
异步线程创建模块,用于创建更新UI的异步线程,包括重写该异步线程的run方法,并通过安卓系统的WindowManager在该异步线程中创建新的根视图rootview;具体通过安卓系统中的context调用其getSystemService方法,获取系统的窗口服务,并返回一个WindowManger对象;创建一个布局作为异步UI的根视图rootview,然后调用WindowManger的addview方法,将创建的根视图rootview添加进去;
消息循环创建模块,用于对异步线程创建消息循环,包括创建一消息队列,用于阻塞该异步线程的run方法,并防止该异步线程中的根视图rootview被销毁;还包括添加逻辑:如果有UI刷新的操作,则在异步线程中进行刷新;若无,则保持等待状态;具体为:通过安卓系统中的Looper工具提供的prepare方法来创建当前线程的Looper对象,当prepare方法调用后,通过调用Looper对象的loop方法创建消息队列并且处于等待状态,则在取消消息队列之前,该异步线程的run方法一直处于运行状态,同时在没有UI刷新操作时,让出所占用的CPU;所述消息队列具体通过安卓系统提供的Handler工具来处理,将Handler对象绑定到指定的Loop对象中,当需要发送更新UI操作时,直接调用handler对象的post方法,对异步线程的UI进行各种控制;
更新模块,用于将UI更新操作的消息发送到消息队列,并在异步线程中更新UI。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611129759.5A CN106775699B (zh) | 2016-12-09 | 2016-12-09 | 在异步线程中更新ui的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611129759.5A CN106775699B (zh) | 2016-12-09 | 2016-12-09 | 在异步线程中更新ui的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106775699A CN106775699A (zh) | 2017-05-31 |
CN106775699B true CN106775699B (zh) | 2021-07-23 |
Family
ID=58879447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611129759.5A Active CN106775699B (zh) | 2016-12-09 | 2016-12-09 | 在异步线程中更新ui的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106775699B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656759B (zh) * | 2017-09-04 | 2021-03-26 | 口碑(上海)信息技术有限公司 | 一种用于用户界面的渲染方法和装置 |
CN108494832B (zh) * | 2018-02-26 | 2021-04-09 | 武汉斗鱼网络科技有限公司 | 直播间全屏和半屏消息统一封装的方法、可读介质及设备 |
CN110806867B (zh) * | 2018-08-06 | 2022-06-17 | 武汉斗鱼网络科技有限公司 | 一种Handle管理方法、存储介质、电子设备及系统 |
CN109240811B (zh) * | 2018-08-09 | 2020-07-31 | 武汉斗鱼网络科技有限公司 | 一种任务执行方法和装置 |
CN109388505B (zh) * | 2018-09-27 | 2019-11-15 | 天涯社区网络科技股份有限公司 | 一种基于Android的异步多任务顺序加载方法 |
CN109634573A (zh) * | 2018-12-18 | 2019-04-16 | 宁夏隆基宁光仪表股份有限公司 | Android操作系统App开发方法、装置及介质 |
CN109710152B (zh) * | 2018-12-28 | 2021-03-16 | 北京小米移动软件有限公司 | 一种事件处理方法、装置及存储介质 |
CN110908764B (zh) * | 2019-11-27 | 2021-06-22 | 四川长虹电器股份有限公司 | 一种实现Android消息管控的方法 |
CN113010300B (zh) * | 2019-12-20 | 2024-07-23 | 北京字节跳动网络技术有限公司 | 图像效果的刷新方法、装置、电子设备及计算机可读存储介质 |
CN113722037B (zh) * | 2021-09-03 | 2023-08-11 | 北京百度网讯科技有限公司 | 一种用户界面的刷新方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591658A (zh) * | 2011-12-28 | 2012-07-18 | 奇智软件(北京)有限公司 | 一种消息处理方法及装置 |
CN103455355A (zh) * | 2013-09-05 | 2013-12-18 | 南京朗睿软件科技有限公司 | 安卓设备及其适配器视图的异步数据加载方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6850257B1 (en) * | 2000-04-06 | 2005-02-01 | Microsoft Corporation | Responsive user interface to manage a non-responsive application |
US8266260B2 (en) * | 2007-12-11 | 2012-09-11 | Sharp Laboratories Of America, Inc. | Method and system for updating the software of multiple network nodes |
CN102385510A (zh) * | 2010-09-06 | 2012-03-21 | 上海可鲁系统软件有限公司 | 一种基于不同开发工具的图形用户界面的界面刷新方法 |
CN102455909B (zh) * | 2011-02-25 | 2014-11-05 | 中标软件有限公司 | 一种演示文稿文档异步加载的方法 |
US8904407B2 (en) * | 2011-07-28 | 2014-12-02 | Microsoft Corporation | Asynchronously refreshing, networked application with single-threaded user interface |
CN102567111B (zh) * | 2011-12-23 | 2017-10-27 | 融创天下(上海)科技发展有限公司 | 一种异步过程调用的方法、系统和终端设备 |
CN103593231B (zh) * | 2012-08-14 | 2016-06-01 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及移动终端 |
US9569062B2 (en) * | 2014-05-21 | 2017-02-14 | Facebook, Inc. | Asynchronous execution of animation tasks for a GUI |
-
2016
- 2016-12-09 CN CN201611129759.5A patent/CN106775699B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591658A (zh) * | 2011-12-28 | 2012-07-18 | 奇智软件(北京)有限公司 | 一种消息处理方法及装置 |
CN103455355A (zh) * | 2013-09-05 | 2013-12-18 | 南京朗睿软件科技有限公司 | 安卓设备及其适配器视图的异步数据加载方法及装置 |
Non-Patent Citations (3)
Title |
---|
"Android -- ViewRoot,关于子线程刷新UI";红黑联盟;《https://www.baidu.com/link?url=yxddCxkQK36H608GleH20srOEazptLlVTH37nV5RRhHqUMPKz4pqZG8CNfC6NklZd6FNnV07zKrB8b-R4DXXQa&wd=&eqid=d9306f1b0000b4e7000000025d47dcab》;20140729;第1-11页 * |
"Android异步处理三:Handler+Looper+MessageQueue深入详解";红黑联盟;《https://www.2cto.com/kf/201204/127130.html》;20120412;第1-7页 * |
红黑联盟."Android -- ViewRoot,关于子线程刷新UI".《https://www.baidu.com/link?url=yxddCxkQK36H608GleH20srOEazptLlVTH37nV5RRhHqUMPKz4pqZG8CNfC6NklZd6FNnV07zKrB8b-R4DXXQa&wd=&eqid=d9306f1b0000b4e7000000025d47dcab》.2014,第1-11页. * |
Also Published As
Publication number | Publication date |
---|---|
CN106775699A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106775699B (zh) | 在异步线程中更新ui的方法及系统 | |
CN106096030B (zh) | 对浏览器运行进行优化的方法和装置 | |
US20090150898A1 (en) | Multithreading framework supporting dynamic load balancing and multithread processing method using the same | |
US9274832B2 (en) | Method and electronic device for thread scheduling | |
US6850257B1 (en) | Responsive user interface to manage a non-responsive application | |
US9407714B2 (en) | Data refreshing of applications | |
US20150277993A1 (en) | Task Processing Method and Virtual Machine | |
CN106445617B (zh) | 基于Android的应用程序冷启动优化方法及系统 | |
US20140053157A1 (en) | Asynchronous execution flow | |
US20050144442A1 (en) | Recovering from device failure | |
CN111596916A (zh) | 一种应用程序管理方法、装置、设备及计算机存储介质 | |
SG187462A1 (en) | Isolation of content by processes in an application | |
US6266056B1 (en) | Display widget interaction in embedded systems using child graphics contexts | |
US20150067664A1 (en) | System, method and apparatus for transparently enabling software applications with adaptive user interfaces | |
CN109634573A (zh) | Android操作系统App开发方法、装置及介质 | |
CN106874010A (zh) | 一种Android系统中ListView快速分页加载的方法 | |
US6351272B1 (en) | Applet and application display in embedded systems using child and orphan graphics contexts | |
CN116701010A (zh) | 一种多线程共享变量的更新方法、系统、装置及介质 | |
CN106775864B (zh) | 一种基于Autofac支持按需加载的服务管理器的实现方法 | |
AU7606301A (en) | Context based view design to support client side multi-threading | |
US10671412B1 (en) | Fast cloning for background processes in scripting environments | |
WO2021129853A1 (zh) | 移动服务升级方法、装置和终端 | |
CN104598008A (zh) | 安卓设备的功耗控制方法 | |
CN115269149A (zh) | 一种基于共享内存的多窗口任务调度机制的方法与系统 | |
CN114995970A (zh) | 任务处理方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |