处理状态事件的方法、装置、终端及存储介质制造方法及图纸

技术编号:21308782 阅读:24 留言:0更新日期:2019-06-12 10:53
本公开是关于一种处理状态事件的方法、装置、终端及存储介质,属于计算机应用领域,该方法包括:接收操作系统的广播消息;确定状态事件对应的任务的至少一个第一子任务和至少一个第二子任务;将至少一个第一子任务分配给应用客户端的主线程执行,将至少一个第二子任务分配给应用客户端的子线程执行。本公开能够将状态事件对应的任务拆分为多个子任务,将预计完成耗时小于预设耗时的第一子任务分配给主线程执行,将预计完成耗时不小于预设耗时的第二子任务分配给子线程执行,通过开启异步线程池,避免了预计完成耗时时间长的子任务影响主线程正在执行的其他任务,从而避免了应用客户端出现ANR和卡顿现象,提高了应用客户端的运行效率。

Methods, devices, terminals and storage media for handling state events

The present disclosure relates to a method, device, terminal and storage medium for handling state events, belonging to the field of computer application. The method includes receiving broadcast messages of an operating system, determining at least one first sub-task and at least one second sub-task of tasks corresponding to state events, and assigning at least one first sub-task to the main thread of an application client for execution. Less than one second sub-task is assigned to the application client's sub-threads for execution. The present disclosure can divide tasks corresponding to state events into several sub-tasks, assign the first sub-task with expected completion time less than preset completion time to the main thread, assign the second sub-task with expected completion time less than preset completion time to the sub-thread execution, and by opening the asynchronous thread pool, avoid the sub-task with long expected completion time affecting the main thread execution. Other tasks, thus avoiding the application client ANR and Katon phenomenon, improve the operation efficiency of the application client.

【技术实现步骤摘要】
处理状态事件的方法、装置、终端及存储介质
本公开涉及计算机应用领域,尤其涉及一种处理广播事件的方法、装置、终端及存储介质。
技术介绍
在终端内部,一般由操作系统来监控应用客户端的状态;并且,操作系统监控到该应用客户端的状态发生改变时,通过系统四大组件中的广播组件来向应用客户端发送广播消息,由应用客户端根据该广播消息,处理状态改变的状态事件。例如,应用客户端下载某个视频时,将该视频的下载任务添加到下载列表中。操作系统监控该下载任务的状态,当操作系统监控到该下载任务完成时,确定应用客户端的状态发生改变,向应用客户端发送广播消息,该广播消息对应的状态事件为将该视频的下载任务从下载列表中移除。应用客户端接收该广播消息,将该视频的下载任务从下载列表中移除。相关技术中应用客户端接收到广播消息时,直接将该广播消息对应的状态事件交由该应用客户端的主线程来执行。例如,应用客户端接收到该广播消息时,将该视频的下载任务从下载列表中移除由该应用客户端的主线程来执行。当该状态事件的处理时长较长时,应用客户端将该状态事件由应用客户端的主线程来执行,会影响主线程中正在执行的其他任务,导致应用客户端出现ANR(AppNotResponse,应用程序无响应)的问题,从而导致应用客户端出现卡顿。
技术实现思路
本公开提供一种处理状态事件的方法、装置、终端及存储介质,可以解决应用客户端出现ANR的问题。根据本公开实施例的第一方面,提供了一种处理状态事件的方法,所述方法包括:接收操作系统的广播消息,所述广播消息用于指示应用客户端的状态事件;确定所述状态事件对应的任务的至少一个第一子任务和至少一个第二子任务;将所述多个子任务中的至少一个第一子任务分配给所述应用客户端的主线程执行,将所述多个子任务中的至少一个第二子任务分配给所述应用客户端的子线程执行,所述第一子任务为预计完成耗时小于预设耗时的子任务,所述第二子任务为预计完成耗时不小于所述预设耗时的子任务。在一种可能实现方式中,所述确定所述状态事件对应的任务的至少一个第一子任务和至少一个第二子任务包括:将所述状态事件对应的任务拆分为多个子任务;确定每个子任务的预计完成耗时;基于所述每个子任务的预计完成耗时,在所述多个子任务中确定所述至少一个第一子任务,以及所述至少一个第二子任务。在另一种可能实现方式中,所述确定每个子任务的预计完成耗时,包括:确定所述每个子任务的任务类型,基于所述每个子任务的任务类型,从任务类型和预计完成耗时的对应关系中,获取所述每个子任务的预计完成耗时;或者,对于每个子任务,确定所述子任务的历史耗时,将所述子任务的历史耗时作为所述子任务的预计完成耗时。在另一种可能实现方式中,所述子线程为单队列的线程池,所述将所述至少一个第二子任务分配给所述应用客户端的子线程执行,包括:将所述至少一个第二子任务分配给所述线程池,并调用所述线程池中的多个第一子线程,通过异步执行方式执行所述至少一个第二子任务。在另一种可能实现方式中,所述调用所述线程池中的多个第一子线程,通过异步执行方式执行所述至少一个第二子任务,包括:基于每个第二子任务的预计完成耗时,确定所述每个第二子任务的执行顺序;对于所述线程池中的每个第一子线程,当所述第一子线程执行完上一个第二子任务时,基于所述执行顺序,确定下一个执行的第二子任务,通过所述第一子线程执行所述下一个执行的第二子任务。在另一种可能实现方式中,所述基于每个第二子任务的预计完成耗时,确定所述每个第二子任务的执行顺序,包括:基于所述每个第二子任务的预计完成耗时,将所述每个第二子任务按照预计完成耗时由短到长进行排序,得到所述执行顺序。在另一种可能实现方式中,在所述接收操作系统的广播消息之前,所述方法包括:当所述应用客户端启动时,在所述操作系统中进行注册广播功能,所述注册广播功能用于当所述应用客户端的状态发生改变时,所述操作系统向所述应用客户端发送所述广播消息。在另一种可能实现方式中,所述在所述操作系统中进行注册广播功能,包括:调用所述操作系统中的广播注册器,创建第一广播标签;调用所述操作系统中的广播接收器,向所述操作系统中的广播中转站发送第一广播标签和注册广播请求,所述注册广播请求携带所述应用客户端的应用标识;调用所述广播中转站,将所述应用标识添加到所述第一广播标签中,得到第二广播标签;调用所述操作系统中的系统管理服务注册器,存储所述第二广播标签,所述第二广播标签用于指示所述应用客户端在所述操作系统中已进行注册广播功能。根据本公开实施例的第二方面,提供了一种处理状态事件的装置,所述装置包括:接收单元,被配置为接收操作系统的广播消息,所述广播消息用于指示应用客户端的状态事件;确定单元,被配置为确定所述状态事件对应的任务的至少一个第一子任务和至少一个第二子任务;分配单元,被配置为将所述至少一个第一子任务分配给所述应用客户端的主线程执行,将所述至少一个第二子任务分配给所述应用客户端的子线程执行,所述第一子任务为预计完成耗时小于预设耗时的子任务,所述第二子任务为预计完成耗时不小于所述预设耗时的子任务。在一种可能实现方式中,所述确定单元,还被配置为将所述状态事件对应的任务拆分为多个子任务;确定每个子任务的预计完成耗时;基于所述每个子任务的预计完成耗时,在所述多个子任务中确定所述至少一个第一子任务,以及所述至少一个第二子任务。在另一种可能实现方式中,所述确定单元,还被配置为确定所述每个子任务的任务类型,基于所述每个子任务的任务类型,从任务类型和预计完成耗时的对应关系中,获取所述每个子任务的预计完成耗时;或者,对于每个子任务,确定所述子任务的历史耗时,将所述子任务的历史耗时作为所述子任务的预计完成耗时。在另一种可能实现方式中,所述子线程为单队列的线程池,所述分配单元,还被配置为将所述至少一个第二子任务分配给所述线程池,并调用所述线程池中的多个第一子线程,通过异步执行方式执行所述至少一个第二子任务。在另一种可能实现方式中,所述分配单元,还被配置为基于每个第二子任务的预计完成耗时,确定所述每个第二子任务的执行顺序;对于所述线程池中的每个第一子线程,当所述第一子线程执行完上一个第二子任务时,基于所述执行顺序,确定下一个执行的第二子任务,通过所述第一子线程执行所述下一个执行的第二子任务。在另一种可能实现方式中,所述分配单元,还被配置为基于所述每个第二子任务的预计完成耗时,将所述每个第二子任务按照预计完成耗时由短到长进行排序,得到所述执行顺序。在另一种可能实现方式中,所述装置还包括:注册单元,被配置为当所述应用客户端启动时,在所述操作系统中进行注册广播功能,所述注册广播功能用于当所述应用客户端的状态发生改变时,所述操作系统向所述应用客户端发送所述广播消息。在另一种可能实现方式中,所述注册单元,还被配置为调用所述操作系统中的广播注册器,创建第一广播标签;调用所述操作系统中的广播接收器,向所述操作系统中的广播中转站发送第一广播标签和注册广播请求,所述注册广播请求携带所述应用客户端的应用标识;调用所述广播中转站,将所述应用标识添加到所述第一广播标签中,得到第二广播标签;调用所述操作系统中的系统管理服务注册器,存储所述第二广播标签,所述第二广播标签用于指示所述应用客户端在所述操作系统中已进行本文档来自技高网...

【技术保护点】
1.一种处理状态事件的方法,其特征在于,所述方法包括:接收操作系统的广播消息,所述广播消息用于指示应用客户端的状态事件;确定所述状态事件对应的任务的至少一个第一子任务和至少一个第二子任务;将所述至少一个第一子任务分配给所述应用客户端的主线程执行,将所述至少一个第二子任务分配给所述应用客户端的子线程执行,所述第一子任务为预计完成耗时小于预设耗时的子任务,所述第二子任务为预计完成耗时不小于所述预设耗时的子任务。

【技术特征摘要】
1.一种处理状态事件的方法,其特征在于,所述方法包括:接收操作系统的广播消息,所述广播消息用于指示应用客户端的状态事件;确定所述状态事件对应的任务的至少一个第一子任务和至少一个第二子任务;将所述至少一个第一子任务分配给所述应用客户端的主线程执行,将所述至少一个第二子任务分配给所述应用客户端的子线程执行,所述第一子任务为预计完成耗时小于预设耗时的子任务,所述第二子任务为预计完成耗时不小于所述预设耗时的子任务。2.根据权利要求1所述的方法,其特征在于,所述确定所述状态事件对应的任务的至少一个第一子任务和至少一个第二子任务,包括:将所述状态事件对应的任务拆分为多个子任务;确定每个子任务的预计完成耗时;基于所述每个子任务的预计完成耗时,在所述多个子任务中确定所述至少一个第一子任务,以及所述至少一个第二子任务。3.根据权利要求2所述的方法,其特征在于,所述确定每个子任务的预计完成耗时,包括:确定所述每个子任务的任务类型,基于所述每个子任务的任务类型,从任务类型和预计完成耗时的对应关系中,获取所述每个子任务的预计完成耗时;或者,对于每个子任务,确定所述子任务的历史耗时,将所述子任务的历史耗时作为所述子任务的预计完成耗时。4.根据权利要求1所述的方法,其特征在于,所述子线程为单队列的线程池,所述将所述至少一个第二子任务分配给所述应用客户端的子线程执行,包括:将所述至少一个第二子任务分配给所述线程池,并调用所述线程池中的多个第一子线程,通过异步执行方式执行所述至少一个第二子任务。5.根据权利要求4所述的方法,其特征在于,所述调用所述线程池中的多个第一子线程,通过异步执行方式执行所述至少一个第二子任务,包括:基于每个第二子任务的预计完成耗时,确定所述每个第二子任务的执行顺序;对于所述线程池中的每个第一子线程,当所述第一子线程执行完上一个第二子任务时,基于所述执行顺序,确定下一个执行的第二子任务,通过所述第一子线程执行所述下一个执行的第二子任务。6.根据权利要求5所述的方法,其特征在于,所述基于每个第二子任务的预计完成耗时,确定所述每个第二子任务的执行顺序,包括:基...

【专利技术属性】
技术研发人员:邓生金
申请(专利权)人:北京达佳互联信息技术有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1