首页 > 应用开发 > IT综合 > 实现直播app源代码开发,使用异步提高系统性能
直播app源代码开发经常会遇到比较耗时任务,比如网络连接,数据库操作等情况时,如果这些操作都是放在主线程(UI线程)中,则会造成UI的卡死,Android中可以使用Thread和Handler两种异步方式来解决这种问题。
处理耗时操作需要分别在Thread和Handler中编写代码逻辑,很繁琐,所以Google官方帮我们在 Thread和Handler的基础上封装出了 AsyncTask。
AsyncTask的使用中会遇到三种泛型参数:
Params,
Progress 和
Result
表示用于AsyncTask执行任务的参数的类型
表示在后台线程处理的过程中,可以阶段性地发布结果的数据类型
表示任务全部完成后所返回的数据类型
调用AsyncTask的execute()方法传入参数并执行任务 AsyncTask会依次调用四个方法 分别是:
onPreExecute
doInBackground
onProgressUpdate
onPostExecute
onPreExecute()方法的
MainThread注解,表示该方法是运行在主线程中的 通常通常用于显示进度条
将在onPreExecute 方法执行后马上执行,该方法运行在直播app源代码后台线程中。这里将主要负责执行那些很耗时的任务。还可以调用publishProgress来更新实时的任务进度。
在publishProgress方法被调用后,UI 线程将调用这个方法返回进展情况,可以通过一个进度条进行展示。
在doInBackground 执行完成后,该方法将被UI 线程调用
用户取消线程操作的时候调用。
在主线程中调用onCancelled()的时候调用。
到这里AsyncTask类基本都懂了吧 接下来就还要了解 Executor
我们知道线程池就是线程的集合,线程池集中管理线程,以实现线程的重用,降低资源消耗,提高响应速度等。线程用于执行异步任务,单个的线程既是工作单元也是执行机制,从JDK1.5开始,为了把工作单元与执行机制分离开,Executor框架诞生了,他是一个用于统一创建与运行的接口。Executor框架实现的就是线程池的功能。
Executor接口的实现类ThreadPoolExecutor类或者ScheduledThreadPoolExecutor类的对象,然后调用其execute()方法或者submit()方法把工作任务添加到线程中,如果有返回值则返回Future对象。其中Callable对象有返回值,因此使用submit()方法;而Runnable可以使用execute()方法,此外还可以使用submit()方法,只要使用callable(Runnable task)或者callable(Runnable task, Object result)方法把Runnable对象包装起来就可以,使用callable(Runnable task)方法返回的null,使用callable(Runnable task, Object result)方法返回result。 出处——
完整代码
有时候,直播app源代码需要处理非常多的执行时间很短的请求,这样每一个请求都开启一个新线程,系统就要不断的进行线程的创建和销毁,创建和销毁线程所花时间会可能会比线程执行的时间还长。而且当线程数量太多时,将该cpu带来额外的消耗,可能会非常巨大。所以就有了线程池 线程池解决的核心问题就是资源管理问题
DefaultWorkExecutor
以上就是直播app源代码使用异步,来提升系统效率的实现。
声明:本文由云豹科技转发自九狼博客,如有侵权请联系作者删除
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70002045/viewspace-2844690/ ,如需转载,请注明出处,否则将追究法律责任。