System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,特别涉及一种信息发送方法、电子设备和存储介质。
技术介绍
1、随着计算机技术的发展,诸如手机、平板电脑等电子设备已经成为人们日常生活中不可或缺的一部分。电子设备的屏幕上可以显示各种应用程序的窗口,为用户带来良好的视觉和操作体验。
2、目前,电子设备中不同进程之间可以通过跨进程通信来传输窗口信息。然而,当一个进程中用于向其他进程发送窗口信息的函数陷入异常状态时,会影响这个进程中其他函数的运行,造成性能问题。
技术实现思路
1、本申请提供了一种信息发送方法、电子设备和存储介质,可以避免因第一函数的异常状态而造成性能问题。所述技术方案如下:
2、第一方面,提供了一种信息发送方法。在该方法中,第一进程的主线程创建第一子线程和第二子线程。该主线程运行第一函数,以将第一目标信息传递给第一子线程。第一子线程接收到该主线程传递的第一目标信息后,向第二进程发送第一目标信息。
3、第一进程是能够获取窗口信息的进程。比如,第一进程可以为surfaceflinger进程,当然,第一进程也可以为其他能够获取窗口信息的进程。
4、第一子线程能够被该主线程通过第一函数调用,且不能被该主线程通过除第一函数之外的其他函数调用。这种情况下,第一子线程用于单独执行第一函数的发送任务。该主线程仅在运行第一函数时能够调用第一子线程来执行发送任务,该主线程在运行其他函数时不能调用第一子线程。
5、第二子线程能够被该主线程通过除第一函数之外的第二函数
6、该主线程至少能够运行第一函数和第二函数,第一函数和第二函数中的一个用于向第二进程发送窗口信息,另一个用于指示第二进程释放缓冲空间。第二进程为除第一进程之外的进程。第一函数和第二函数对应的第二进程可以相同,也可以不同。比如,第一函数可以为updateinputflinger函数,第二函数可以为releasebuffer函数,这种情况下,第一函数对应的第二进程为需要窗口信息的进程,第二函数对应的第二进程为需要释放缓冲空间的进程;或者,第一函数可以为releasebuffer函数,第二函数可以为updateinputflinger函数,这种情况下,第一函数对应的第二进程为需要释放缓冲空间的进程,第二函数对应的第二进程为需要窗口信息的进程。示例地,需要窗口信息的进程可以为systemserver进程,systemserver进程包括inputdispatcher线程,inputdispatcher线程可根据窗口信息进行触摸事件的分发。
7、第一目标信息是第一函数需要向第二进程发送的信息。比如,若第一函数用于向第二进程发送窗口信息,则第一目标信息为目标窗口信息。或者,若第一函数用于指示第二进程释放缓冲空间,则第一目标信息为缓冲空间释放信息。其中,目标窗口信息可以是电子设备显示的部分或全部窗口的窗口信息。
8、在本申请中,该主线程通过运行第一函数可以调用第一子线程来执行发送任务,该主线程通过运行第二函数可以调用第二子线程来执行发送任务。第一子线程和第二子线程的运行互不影响,因而第一函数和第二函数中的一个函数的异常状态不会影响到另一个函数的运行,从而可以避免因第一函数或第二函数的异常状态而造成性能问题。
9、可选地,第一函数用于向第二进程发送窗口信息,第一目标信息为目标窗口信息。该主线程运行第一函数以执行如下操作:获取当前窗口信息;根据当前窗口信息确定目标窗口信息,目标窗口信息为当前窗口信息中除包含预设窗口类型的窗口信息之外的其他窗口信息;若根据当前窗口信息确定窗口发生变化,则根据目标窗口信息调用第一子线程,以将目标窗口信息传递给所述第一子线程。
10、示例地,预设窗口类型可以为用户在屏幕上无法直接操作的窗口的窗口类型,如预设窗口类型可以包括不可见窗口类型、非输入通道窗口类型等窗口类型中的一个或多个。
11、在本申请中,第一函数向第二进程发送的目标窗口信息是对当前窗口信息进行筛选得到的,经过筛选,极大的减少了需要向第二进程发送的窗口信息的数据量,从而优化了负载情况,可以在一定程度上避免出现稳定性问题。
12、可选地,第一函数用于向第二进程发送窗口信息,第一目标信息为目标窗口信息,第一子线程接收到主线程传递的第一目标信息后,向第二进程发送第一目标信息的操作可以为:第一子线程接收到该主线程传递的目标窗口信息后,确定接收到目标窗口信息的时刻与上一次向第二进程发送窗口信息的时刻之间的时间间隔;根据该时间间隔向第二进程发送目标窗口信息。
13、在本申请中,第一子线程可以根据接收到目标窗口信息的时刻与上一次向第二进程发送窗口信息的时刻之间的时间间隔向第二进程发送目标窗口信息,以期达到降低窗口信息的发送频率的目的。
14、其中,第一子线程根据该时间间隔向第二进程发送目标窗口信息的操作可以为:第一子线程在该时间间隔大于或等于第一时长的情况下向第二进程发送目标窗口信息;在该时间间隔小于第一时长的情况下,若在接收到目标窗口信息后的第一时长内未接收到下一条窗口信息,则向第二进程发送目标窗口信息。
15、第一时长大于显示屏的帧间隔时间。可选地,第一时长还可以小于或等于m倍的帧间隔时间,m大于1,如m可以为2、3等。
16、在本申请中,第一子线程接收到目标窗口信息后,是在接收到目标窗口信息的时刻与上一次发送窗口信息的时刻之间的时间间隔大于显示屏的帧间隔时间的情况下才向第二进程发送目标窗口信息,如此,可以实现隔帧发送窗口信息,从而降低了窗口信息的发送频率,优化了负载情况,可以避免出现稳定性问题。
17、需说明的是,在第一时长大于m-1倍的帧时间间隔且小于或等于m倍的帧时间间隔的情况下,第一子线程每次至少间隔m-1个图像帧向第二进程发送一次窗口信息。比如,在第一时长大于帧间隔时间且小于或等于2倍的帧间隔时间的情况下,第一子线程每次至少间隔一个图像帧向第二进程发送一次窗口信息。
18、进一步地,第一子线程在该时间间隔小于第一时长的情况下,若在接收到目标窗口信息后的第一时长内未接收到下一条窗口信息,则向第二进程发送目标窗口信息。这种情况下,由于第一时长大于帧间隔时间,所以第一子线程是至少间隔该帧间隔时间向第二进程发送一次窗口信息,从而降低了窗口信息的发送频率,优化了负载情况,可以避免出现稳定性问题。
19、可选地,第一子线程接收到目标窗口信息后,可以在接收到目标窗口信息的时刻与上一次向第二进程发送窗口信息的时刻之间的时间间隔小于第一时长的情况下,本文档来自技高网...
【技术保护点】
1.一种图像显示方法,所述方法应用于电子设备,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述第一进程为SystemServer进程。
3.如权利要求2所述的方法,其特征在于,所述SurfaceFlinger进程的第一线程向第一进程发送所述窗口信息,包括:
4.如权利要求1-3中任一项所述的方法,其特征在于,所述第一线程和所述第二线程为所述SurfaceFlinger进程的子线程,
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
6.如权利要求1-5中任一项所述的方法,其特征在于,所述第二进程为所述RenderThread线程所属的进程。
7.如权利要求1-6中任一项所述的方法,其特征在于,所述SurfaceFlinger进程被运行,以得到窗口信息,包括:
8.如权利要求6所述的方法,其特征在于,所述缓冲空间释放信息用于指示所述RenderThread线程释放缓冲空间。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
10.一种电子设备,
11.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-9中任一项所述的方法。
12.一种芯片系统,其特征在于,所述芯片系统包括处理器,所述处理器用于调用存储器中的计算机程序,以执行如权利要求1-9中任一项所述的方法。
...【技术特征摘要】
1.一种图像显示方法,所述方法应用于电子设备,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述第一进程为systemserver进程。
3.如权利要求2所述的方法,其特征在于,所述surfaceflinger进程的第一线程向第一进程发送所述窗口信息,包括:
4.如权利要求1-3中任一项所述的方法,其特征在于,所述第一线程和所述第二线程为所述surfaceflinger进程的子线程,
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
6.如权利要求1-5中任一项所述的方法,其特征在于,所述第二进程为所述renderthread线程所属的进程。
7.如权利要求1-6中任一项所述的方法,其特征在于,所述surfaceflinger进程被运行,以得到窗口信息,包括:
8.如权利...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。