System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
【】本申请涉及生命周期调度领域,具体而言,涉及一种生命周期调度的方法、装置、电子设备及计算机可读存储介质。
技术介绍
0、
技术介绍
1、当用户启动、退出应用或在不同的应用之间切换时,操作系统会调度应用中的功能实例(ability)在不同的生命周期之间切换,进而调用与功能实例生命周期相对应的回调方法,这些回调方法中包括应用开发者预先实现的相应业务逻辑。
2、目前,功能实例生命周期回调方法的原型均为同步接口,功能实例管理服务(ability manager service,ams)对功能实例生命周期的调度也采用同步的方式进行,即上一个生命周期结束后会自动进入下一个生命周期。而操作系统已提供的应用程序编程接口(application programming interface,api)大多为异步接口,这样不可避免的会遇到需要在同步生命周期回调中处理异步任务的问题。若应用需要在某些异步任务处理完毕之后,再进入下一个生命周期,此时的生命周期调度及同步接口便存在使用上的限制。
3、例如,应用退出时会销毁功能实例,信息应用需要确保在功能实例销毁之前将用户的草稿信息存储到数据库中,由于存储到数据库这个任务是异步任务,而功能实例销毁时的“功能实例销毁生命周期”回调是同步接口,导致存在着在应用退出前用户的草稿信息丢失的风险。
4、因此,如何实现在功能实例的当前生命周期内完成对异步任务的处理为本领域需要解决的技术问题。
技术实现思路
0、【
技术实现思路
1、为了解决现有技术中无法实现在功能实例的当前生命周期内完成对异步任务的处理的问题,本申请提供一种生命周期调度的方法。
2、一种生命周期调度的方法,包括:
3、获取功能实例所处的生命周期;
4、检测在所述生命周期内是否存在需要执行的异步任务;
5、若是,则在所述异步任务执行完成后,将所述功能实例所处的生命周期切换为下一个生命周期。
6、可选地,所述检测在所述生命周期内是否存在需要执行的异步任务,包括:
7、检测所述生命周期对应的回调函数中是否存在异步接口;
8、若存在,则确定所述异步接口对应的异步任务为在所述生命周期内需要执行的异步任务。
9、可选地,所述检测所述生命周期对应的回调函数中是否存在异步接口,包括:
10、检测所述生命周期对应的回调函数的名称中是否包含第一关键字;
11、若是,则检测所述生命周期对应的回调函数中是否存在名称中包含第二关键字的接口;
12、若存在,则确认所述名称中包含所述第二关键字的接口为所述异步接口。
13、可选地,所述方法还包括:
14、获取异步接口调用指令,并依据所述异步接口调用指令确定待调用回调函数及待调用异步接口;
15、将所述待调用异步接口添加至所述待调用回调函数中;
16、将所述第一关键字添加至所述待调用回调函数的名称中,并将所述第二关键字添加至所述待调用异步接口的名称中。
17、可选地,所述第一关键字包括async关键字,所述第二关键字包括await关键字。
18、可选地,所述方法还包括:
19、当在所述生命周期内不存在需要执行的异步任务时,检测所述生命周期内的同步任务是否执行完成;
20、若是,则将所述功能实例所处的生命周期切换为下一个生命周期。
21、可选地,在所述异步任务执行完成之前,所述方法还包括:
22、当在所述生命周期内存在需要执行的异步任务时,将所述异步任务存入任务队列中;
23、执行所述生命周期内的同步任务,并在所述同步任务执行完成后执行所述任务队列中的异步任务。
24、即本申请实施例可以先将异步任务放入任务队列中,然后执行功能实例启动生命周期内的同步任务,由线程在空闲时顺序执行该任务队列内的异步任务,进而提高生命周期内任务的执行效率。
25、可选地,在获取功能实例所处的生命周期之前,所述方法还包括:
26、检测是否存在所述功能实例的生命周期调度请求;
27、若存在,则确定所述生命周期调度请求对应的同步接口;
28、调用功能实例管理服务执行所述同步接口对应的同步任务。
29、可选地,在所述异步任务执行完成之前,所述方法还包括:
30、依据所述功能实例所处的生命周期确定所述功能实例的生命周期状态;
31、所述在所述异步任务执行完成后,将所述功能实例所处的生命周期切换为下一个生命周期,包括:
32、在所述异步任务执行完成后,将所述功能实例的生命周期状态变更为下一个生命周期对应的生命周期状态。
33、即在本申请实施例中可以通过变更生命周期状态进行生命周期的切换,这样既不会阻塞线程的执行,也使得功能实例生命周期状态切换的流程更加清晰。
34、可选地,所述生命周期包括功能实例启动生命周期、功能实例销毁生命周期、功能实例切换至前台生命周期、功能实例切换至后台生命周期、功能实例创建界面生命周期、功能实例销毁界面生命周期中的至少一项。
35、一种生命周期调度装置,包括:
36、获取模块,用于获取功能实例所处的生命周期;
37、检测模块,用于检测在所述生命周期内是否存在需要执行的异步任务;
38、切换模块,用于若是,则在所述异步任务执行完成后,将所述功能实例所处的生命周期切换为下一个生命周期。
39、一种电子设备,包括:
40、处理器和存储器,所述存储器用于存储至少一条指令,所述指令由所述处理器加载并执行时以实现如上述的生命周期调度的方法。
41、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的生命周期调度的方法。
42、本申请实施例提供的生命周期调度的方法,通过获取功能实例所处的生命周期;检测在生命周期内是否存在需要执行的异步任务;若存在,则在异步任务执行完成后,将功能实例所处的生命周期切换为下一个生命周期。本申请通过在检测功能实例所处的生命周期内存在需要执行的异步任务后,等待异步任务执行完成,再将功能实例所处的生命周期切换为下一个生命周期,改变了生命周期原有的同步调度方式,达到通过异步方式实现同步接口的目的,实现了在功能实例的当前生命周期内完成对异步任务的处理。
本文档来自技高网...【技术保护点】
1.一种生命周期调度的方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述检测在所述生命周期内是否存在需要执行的异步任务,包括:
3.根据权利要求2所述的方法,其特征在于,所述检测所述生命周期对应的回调函数中是否存在异步接口,包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求3所述的方法,其特征在于,所述第一关键字包括async关键字,所述第二关键字包括await关键字。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1所述的方法,其特征在于,在所述异步任务执行完成之前,所述方法还包括:
8.根据权利要求1所述的方法,其特征在于,在获取功能实例所处的生命周期之前,所述方法还包括:
9.根据权利要求1所述的方法,其特征在于,在所述异步任务执行完成之前,所述方法还包括:
10.根据权利要求1-9任一项所述的方法,其特征在于,所述生命周期包括功能实例启动生命周期、功能实例销毁生命周期、功能实例切换
11.一种生命周期调度装置,其特征在于,包括:
12.一种电子设备,其特征在于,包括:
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-10中任意一项所述的生命周期调度的方法。
...【技术特征摘要】
1.一种生命周期调度的方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述检测在所述生命周期内是否存在需要执行的异步任务,包括:
3.根据权利要求2所述的方法,其特征在于,所述检测所述生命周期对应的回调函数中是否存在异步接口,包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求3所述的方法,其特征在于,所述第一关键字包括async关键字,所述第二关键字包括await关键字。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1所述的方法,其特征在于,在所述异步任务执行完成之前,所述方法还包括:
8.根据权利要求1所述的方法...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。