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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。