Android-在android中什么时候用AsyncTask或者Runnable

需求定制 需求定制 主题:1050 回复:2283

Android-在android中什么时候用AsyncTask或者Runnable

瑾兮 发布于 2017-06-30 字数 95 浏览 1128 回复 4

我知道跟UI交互的时候一般用AsyncTask,当不与UI交互时分别什么时候用AsyncTask或者Runnable?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(4

浮生未歇 2017-10-19 4 楼

Runnable封装了要执行的方法,但Runable本身与异步操作没什么关系。Runable中的操作如果不是放在Thread中,操作还是在UI主线程执行的。AsyncTask主要用于后台执行耗时操作,并内建了回调机制,用于与UI界面进行交互。另外:AsynTask在API Level为13之后就默认不是线程池的并行模式了,变成了串行模式,即多个任务之间不是并行执行,而是一个任务完成再进行另一个。参考:https://groups.google.com/forum/?fromgroups=#!topic/android-developers/8M0RTFfO7-M

偏爱自由 2017-10-01 3 楼

交互与否关系不是很大.
主要是考虑前面有多少个AsyncTask在排队,如果太多的话,就将其中一些采用runnable+handler来处理,AsyncTask内部还是用的runnable这一套代码。

浮生未歇 2017-08-30 2 楼

AsyncTask是系统封装的一个用于异步操作的类。主要是避免在主线程做耗时操作,从而阻塞主线程的问题。这个类是针对主线程做后台任务定制的,应该是不能用于其他线程的,所以如果不与UI交互时,也就不能用他了吧
Runnalbe相当于一个可执行代码段,我觉得他和函数的不同是,他是异步的。线程间调用也比较安全

归属感 2017-07-19 1 楼

对up的进行补充:AsyncTask里面也包含线程池等一些东西.所以不需要写线程池代码了. 如果你已经有成熟的线程池代码的话,用runnable+handler也行的. 一般线程间交互比较多还是用runnable. 与UI进行交互AsyncTask还是比较方便的. 他封装了前置后置方法等,handler的处理也省了.