CN108595236A - 一种防止子线程进行用户界面操作的方法及装置 - Google Patents

一种防止子线程进行用户界面操作的方法及装置 Download PDF

Info

Publication number
CN108595236A
CN108595236A CN201810259255.8A CN201810259255A CN108595236A CN 108595236 A CN108595236 A CN 108595236A CN 201810259255 A CN201810259255 A CN 201810259255A CN 108595236 A CN108595236 A CN 108595236A
Authority
CN
China
Prior art keywords
user interface
present user
interface operation
sub
environment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810259255.8A
Other languages
English (en)
Inventor
郭方清
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuba Co Ltd
Original Assignee
Wuba Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuba Co Ltd filed Critical Wuba Co Ltd
Priority to CN201810259255.8A priority Critical patent/CN108595236A/zh
Publication of CN108595236A publication Critical patent/CN108595236A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明公开了一种防止子线程进行用户界面操作的方法及装置,其中,方法包括:对执行视图渲染的执行进程是否被调用进行监测;在监测到执行进程被调用时,判定当前用户界面操作是子线程的线程操作;在判定当前用户界面操作为子线程的线程操作时,将当前用户界面操作调整为主线程的线程操作;本发明的方法及装置,通过对执行视图渲染的执行进程是否被调用进行监测,并依据监测结果实现了对当前用户界面操作是否为子线程的线程操作进行了判定,此外,在确定当前用户界面操作是子线程的线程操作的情况下,就可以将该当前用户界面操作及时的调整为主线程的线程操作。从而,有效的避免了未将UI操作置于主线程进行处理而导致UI刷新时出现卡顿甚至APP闪退等问题。

Description

一种防止子线程进行用户界面操作的方法及装置
技术领域
本发明涉及移动通信技术领域,尤其涉及一种防止子线程进行用户界面操作的方法及装置。
背景技术
iOS是目前市场上手机iPhone和平板电脑iPad的操作系统,由于硬件的支撑,手机iPhone上的iOS同样可以像电脑系统一样多线程并发地处理各种各样的逻辑。而且,为了保证iOS的流畅性,系统在设计之初便约定所有UI(User's Interface,用户界面)操作都必须放在主线程处理。由于开发人员在实现各种多线程操作时经常会对此忽视或者对此误操作,从而会导致子线程进行UI操作,而这又常导致UI刷新时出现卡顿甚至APP闪退等问题。
发明内容
本发明的主要目的在于提出一种防止子线程进行用户界面操作的方法及装置,其克服了因开发人员在实现各种多线程操作时未将UI操作置于主线程进行处理而导致UI刷新时出现卡顿甚至APP闪退等问题。
根据本发明的一个方面,提供了一种防止子线程进行用户界面操作的方法,所述方法包括:对执行视图渲染的执行进程是否被调用进行监测;在监测到所述执行进程被调用时,判定所述当前用户界面操作是子线程的线程操作;在判定所述当前用户界面操作为子线程的线程操作时,将所述当前用户界面操作调整为主线程的线程操作。
可选的,所述执行进程包括:用于计算视图布局的进程和/或用于绘制视图的进程。
可选的,所述将所述当前用户界面操作调整为主线程的线程操作,包括:对所述当前用户界面操作的所处环境是开发环境或是处于线上环境进行检测;在检测到所述当前用户界面操作的所处环境是开发环境的情况下,产生告警信息,以提醒开发端将所述当前用户界面操作开发为主线程的线程操作;在检测到所述当前用户界面操作的所处环境是线上环境的情况下,将所述当前用户界面操作保存至预设代码块,并通过主线程的应用程序编程接口API对所述预设代码块进行处理以实现将所述当前用户界面操作跳转为主线程的线程操作。
可选的,所述对所述当前用户界面操作的所处环境是开发环境或是处于线上环境进行检测包括:预先在所述当前用户界面操作中编译入标识宏定义;或者,修改所述当前用户界面操作中的宏定义为标识宏定义;其中,所述标识宏定义用于指示所述当前用户界面操作所处环境;通过检测所述当前用户界面操作中的标识宏定义,获取所述当前用户界面操作所处环境。
可选的,当所述当前用户界面操作的所处环境是开发环境时,所述标识宏定义DEV=1;当所述当前用户界面操作的所处环境是线上环境时,所述标识宏定义DEV=0。
根据本发明的第二个方面,提供了一种防止子线程进行用户界面操作的装置,所述装置包括:监测模块,用于对执行视图渲染的执行进程是否被调用进行监测;判定模块,用于在监测到所述执行进程被调用时,判定所述当前用户界面操作是子线程的线程操作;调整模块,用于在判定所述当前用户界面操作为子线程的线程操作时,将所述当前用户界面操作调整为主线程的线程操作。
可选的,所述调整模块包括:检测单元,用于对所述当前用户界面操作的所处环境是开发环境或是处于线上环境进行检测;告警单元,用于在检测到所述当前用户界面操作的所处环境是开发环境的情况下,产生告警信息,以提醒开发端将所述当前用户界面操作开发为主线程的线程操作;跳转模块,用于在检测到所述当前用户界面操作的所处环境是线上环境的情况下,将所述当前用户界面操作保存至预设代码块,并通过主线程的应用程序编程接口API对所述预设代码块进行处理以实现将所述当前用户界面操作跳转为主线程的线程操作。
可选的,所述检测单元具体用于:预先在所述当前用户界面操作中编译入标识宏定义;或者,修改所述当前用户界面操作中的宏定义为标识宏定义;其中,所述标识宏定义用于指示所述当前用户界面操作所处环境;通过检测所述当前用户界面操作中的标识宏定义,获取所述当前用户界面操作所处环境。
可选的,所述执行进程包括:用于计算视图布局的进程和/或用于绘制视图的进程。
可选的,当所述当前用户界面操作的所处环境是开发环境时,所述标识宏定义DEV=1;当所述当前用户界面操作的所处环境是线上环境时,所述标识宏定义DEV=0。
根据本发明的第三个方面,提供了一种计算机设备,包括处理器和存储器;所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种防止子线程进行用户界面操作的方法。
根据本发明的第四个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的一种防止子线程进行用户界面操作的方法。
本发明有益效果如下:通过本发明提供的一种防止子线程进行用户界面操作的方法及装置,对执行视图渲染的执行进程是否被调用进行监测,并依据监测结果实现了对当前用户界面操作是否为子线程的线程操作进行了判定,此外,在确定当前用户界面操作是子线程的线程操作的情况下,就可以将该当前用户界面操作及时的调整为主线程的线程操作。从而,有效的避免了因开发人员在实现各种多线程操作时未将UI操作置于主线程进行处理而导致用户界面UI刷新时出现卡顿甚至APP闪退等问题,当然,也就提升了产品体验。
附图说明
图1为本发明第一实施例一种防止子线程进行用户界面操作的方法的流程框图;
图2为本发明第二实施例一种防止子线程进行用户界面操作的方法的流程框图;
图3为本发明第三实施例一种防止子线程进行用户界面操作的方法的流程框图;
图4为本发明第四实施例一种防止子线程进行用户界面操作的方法的流程图;
图5为本发明第五实施例一种防止子线程进行用户界面操作的装置的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
为了便于理解本发明实施例,下面通过几个具体实施例对本发明的实施过程进行详细的阐述。
本发明第一实施例提供了一种防止子线程进行用户界面操作的方法,所述方法包括:对执行视图渲染的执行进程是否被调用进行监测;在监测到所述执行进程被调用时,判定所述当前用户界面操作是子线程的线程操作;在判定所述当前用户界面操作为子线程的线程操作时,将所述当前用户界面操作调整为主线程的线程操作。
就此,通过对执行视图渲染的执行进程是否被调用进行监测,并依据监测结果实现了对当前用户界面操作是否为子线程的线程操作进行了判定,此外,在确定当前用户界面操作是子线程的线程操作的情况下,就可以将该当前用户界面操作及时的调整为主线程的线程操作。从而,有效的避免了因开发人员在实现各种多线程操作时未将UI操作置于主线程进行处理而导致用户界面UI刷新时出现卡顿甚至APP闪退等问题,当然,也就提升了产品体验。
具体的,图1为本发明第一实施例一种防止子线程进行用户界面操作的方法的流程框图。根据图1所示,本发明第一实施例提供了一种防止子线程进行用户界面操作的方法,所述方法包括:
S1:对执行视图渲染的执行进程是否被调用进行监测;
S2:在监测到所述执行进程被调用时,判定所述当前用户界面操作是子线程的线程操作;
因为在移动终端的操作系统中,所有的用户界面UI视图代码类都是集成自UIView系统类,所以,只要涉及属于子线程的线程操作的用户界面操作,必然会调用执行视图渲染的执行进程。举例来说,其中,移动终端的操作系统包括iOS系统。
基于此,在本实施例中,需要在执行当前用户界面操作时,对执行视图渲染的执行进程是否被调用进行监测,在监测到所述执行进程被调用时,判定所述当前用户界面操作是子线程的线程操作;否则,则可判定当前用户界面操作不是子线程的线程操作。
具体的,在执行当前用户界面操作时,只要监测到执行视图渲染的执行进程被调用,即可确定当前用户界面操作为子线程的线程操作。
优选的,所述执行进程包括:用于计算视图布局的进程和/或用于绘制视图的进程。具体的,计算视图布局的进程包括setNeedsLayout;而用于绘制视图的进程包括:setNeedsDisplay和/或setNeedsDisplayInRect。所以,在本实施例中,只要监测到该执行进程中的一种或多种被调用时,即可判定当前用户界面操作为子线程的线程操作。
S3:在判定所述当前用户界面操作为子线程的线程操作时,将所述当前用户界面操作调整为主线程的线程操作。
在本实施例中,在判定当前用户界面操作为子线程的线程操作的情况下,即可将当前用户界面操作调整为主线程的线程操作。
就此,通过对执行视图渲染的执行进程是否被调用进行监测,并依据监测结果实现了对当前用户界面操作是否为子线程的线程操作进行了判定,此外,在确定当前用户界面操作是子线程的线程操作的情况下,就可以将该当前用户界面操作及时的调整为主线程的线程操作。从而,有效的避免了因开发人员在实现各种多线程操作时未将UI操作置于主线程进行处理而导致用户界面UI刷新时出现卡顿甚至APP闪退等问题,当然,也就提升了产品体验。
图2为本发明第二实施例一种防止子线程进行用户界面操作的方法的流程框图。根据图2所示,本发明第二实施例提供了一种防止子线程进行用户界面操作的方法,所述方法包括:
S1:对执行视图渲染的执行进程是否被调用进行监测;
S2:在监测到所述执行进程被调用时,判定所述当前用户界面操作是子线程的线程操作;
S3:在判定所述当前用户界面操作为子线程的线程操作时,将所述当前用户界面操作调整为主线程的线程操作。
上述步骤S2的一种实现方式为:
S21:对所述当前用户界面操作的所处环境是开发环境或是处于线上环境进行检测;
S22:在检测到所述当前用户界面操作的所处环境是开发环境的情况下,产生告警信息,以提醒开发端将所述当前用户界面操作开发为主线程的线程操作;
S23:在检测到所述当前用户界面操作的所处环境是线上环境的情况下,将所述当前用户界面操作保存至预设代码块,并通过主线程的应用程序编程接口API对所述预设代码块进行处理以实现将所述当前用户界面操作跳转为主线程的线程操作。
具体的,在判定所述当前用户界面操作为子线程的线程操作的情况下,需要对当前用户界面操作所处环境进行检测。即:需要对当前用户界面操作所处环境是开发环境或是处于线上环境进行检测。
在检测到所述当前用户界面操作的所处环境是开发环境的情况下,会产生告警信息,以提醒开发端将所述当前用户界面操作开发为主线程的线程操作;具体的,在检测到该当前用户界面操作的所处环境为开发环境时,开发人员会写入一段代码以产生提醒作用,比如:在开发环境时,通过该代码可以弹出提示框以提示开发人员“目前操作在非主线程,请修改”,从而开发人员就可以将当前用户界面操作重新开发为主线程的线程操作(比如调用系统API来转换到主线程处理)。就此,可以提前在程序开发阶段就可以发现当前用户界面操作为子线程的线程操作的问题,并在程序开发阶段就可以对该问题进行解决,避免产品上线以后出现因程序漏洞出现闪退或用户界面UI刷新时出现卡顿等影响用户体验的问题,从而提升了产品体验。
而且,在本实施例中,并不对在开发环境时如何将当前用户界面操作调整为主线程的线程操作做出限定,优选的,在本实施例中,在当前用户界面操作的逻辑结尾处添加跳转代码。
此外,在检测到所述当前用户界面操作的所处环境是线上环境的情况下,将所述当前用户界面操作保存至预设代码块,并通过主线程的应用程序编程接口API对所述预设代码块进行处理以实现将所述当前用户界面操作跳转为主线程的线程操作。具体的,在检测到该当前用户界面操作的所处环境为线上环境时,对当前用户界面操作进行拦截,并将该当前用户界面操作保存到预设代码块中(内存引用该处理逻辑),然后调用系统API(同步到主线程操作的API)来处理该预设代码块,即通过主线程的API对所述预设代码块进行处理,以此实现将所述当前用户界面操作跳转为主线程的线程操作。
其中,API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
就此,可以有效地避免在线上环境出现当前用户界面操作为子线程的线程操作而导致的卡顿、闪退等问题,从而提升了产品体验。
图3为本发明第三实施例一种防止子线程进行用户界面操作的方法的流程框图。根据图3所示,本发明第三实施例提供了一种防止子线程进行用户界面操作的方法,所述方法包括:
S1:对执行视图渲染的执行进程是否被调用进行监测;
S2:在监测到所述执行进程被调用时,判定所述当前用户界面操作是子线程的线程操作;
S3:在判定所述当前用户界面操作为子线程的线程操作时,将所述当前用户界面操作调整为主线程的线程操作。
上述步骤S2的一种实现方式为:
S21:对所述当前用户界面操作的所处环境是开发环境或是处于线上环境进行检测;
S22:在检测到所述当前用户界面操作的所处环境是开发环境的情况下,产生告警信息,以提醒开发端将所述当前用户界面操作开发为主线程的线程操作;
S23:在检测到所述当前用户界面操作的所处环境是线上环境的情况下,将所述当前用户界面操作保存至预设代码块,并通过主线程的应用程序编程接口API对所述预设代码块进行处理以实现将所述当前用户界面操作跳转为主线程的线程操作。
上述步骤S21的一种实现方式为:
S211:预先在所述当前用户界面操作中编译入标识宏定义;或者,修改所述当前用户界面操作中的宏定义为标识宏定义;其中,所述标识宏定义用于指示所述当前用户界面操作所处环境;通过检测所述当前用户界面操作中的标识宏定义,获取所述当前用户界面操作所处环境。
具体的,如果是开发者在开发阶段,可以通过预先设置使得系统在编译该当前用户界面操作时自动加入一个标识宏定义(定义了开发环境),通过对该标识宏定义的值进行检测来确定出该当前用户界面操作的所处环境;当然,也可由开发人员在该当前用户界面操作的代码中手动修改某个宏定义为标识宏定义,借助对该经修改得到的标识宏定义进行检测来确定当前的环境。
可选的,当所述当前用户界面操作的所处环境是开发环境时,所述标识宏定义DEV=1;当所述当前用户界面操作的所处环境是线上环境时,所述标识宏定义DEV=0。
为了更好说明本实施例所述方法的实施过程,下面结合一个具体应用示例,对本实施例所述方法进行说明。
图4为本发明第四实施例一种防止子线程进行用户界面操作的方法的流程图。在本发明第四实施例提供的一种防止子线程进行用户界面操作的方法,包括:
步骤1:对以下执行视图渲染的三种执行进程中的一种或多种是否被触发调用进行监听,该三种执行进程包括:setNeedsLayout、setNeedsDisplay、setNeedsDisplayInRect。其中,因为所有的用户界面UI视图代码类都是集成自UIView系统类,所以,只要涉及属于子线程的线程操作的用户界面操作,必然会触发调用执行视图渲染的执行进程,所以,只需监听到该三种执行进程中的一种或多种被触发调用,即可确定当前用户界面操作为子线程的线程操作。
具体的,在UIView(WBGuard)内部启用runtime的进程拦截机制,对以上三个执行进程监听拦截。即:在整个项目加载完并首次启动时,利用runtime特有的MethodSwizzling技术来监听拦截上述的三个执行进程。
其中,UIView表示屏幕上的一块矩形区域,它在App中占有绝对重要的地位,因为iOS中几乎所有可视化控件都是UIView的子类。负责渲染区域的内容,并且响应该区域内发生的触摸事件。
Method swizzling指的是改变一个已存在的选择器对应的实现的过程,它依赖于Objectvie-C中方法的调用能够在运行时进行改变——通过改变类的调度表(dispatchtable)中选择器到最终函数间的映射关系。
runtime是指一个程序在运行的状态。也就是说,当你打开一个程序使它在电脑上运行的时候,那个程序就是处于运行时刻。在一些编程语言中,把某些可以重用的程序或者实例打包或者重建成为“运行库"。这些实例可以在它们运行的时候被链接或者被任何程序调用。
步骤2:在执行当前用户界面操作时,若未监听到包括但不限于上述三种执行进程的一种或多种被触发调用,可确定当前用户界面操作不是在子线程上实现,即当前用户界面操作不是在非主线程上实现,而是在主线程上实现,而且,持续执行步骤1;若监听到上述三种执行进程的一种或多种被触发调用,即可确定当前用户界面操作是在子线程上实现。
步骤3:在确定当前用户界面操作在主线程上实现的情况下,不进行任何操作,以通过主线程执行当前用户界面操作;在确定当前用户界面操作在子线程上实现的情况下,执行步骤4以对当前用户界面操作的所处环境进行判断;
步骤4:在判定当前用户界面操作的所处环境为开发环境时,提醒开发人员进行相应处理,以将当前用户界面操作开发为主线程的线程操作;
在判定当前用户界面操作的所处环境为线上环境时,将所述当前用户界面操作保存至预设代码块,并通过主线程的应用程序编程接口API对所述预设代码块进行处理以实现将所述当前用户界面操作跳转为主线程的线程操作。具体的,该所述当前用户界面操作跳转为主线程的线程操作包括:
就此,通过对执行视图渲染的执行进程是否被调用进行监测,并依据监测结果实现了对当前用户界面操作是否为子线程的线程操作进行了判定,此外,在确定当前用户界面操作是子线程的线程操作的情况下,就可以将该当前用户界面操作及时的调整为主线程的线程操作。从而,有效的避免了因开发人员在实现各种多线程操作时未将UI操作置于主线程进行处理而导致用户界面UI刷新时出现卡顿甚至APP闪退等问题,当然,也就提升了产品体验。
图5为本发明第四实施例一种防止子线程进行用户界面操作的装置的结构示意图。根据图5所示,本发明第四实施例提供了一种防止子线程进行用户界面操作的装置,所述装置包括:监测模块110,用于对执行视图渲染的执行进程是否被调用进行监测;判定模块120,用于在监测到所述执行进程被调用时,判定所述当前用户界面操作是子线程的线程操作;调整模块130,用于在判定所述当前用户界面操作为子线程的线程操作时,将所述当前用户界面操作调整为主线程的线程操作。
可选的,所述调整模块130包括:检测单元,用于对所述当前用户界面操作的所处环境是开发环境或是处于线上环境进行检测;告警单元,用于在检测到所述当前用户界面操作的所处环境是开发环境的情况下,产生告警信息,以提醒开发端将所述当前用户界面操作开发为主线程的线程操作;跳转模块,用于在检测到所述当前用户界面操作的所处环境是线上环境的情况下,将所述当前用户界面操作保存至预设代码块,并通过主线程的应用程序编程接口API对所述预设代码块进行处理以实现将所述当前用户界面操作跳转为主线程的线程操作。
可选的,所述检测单元具体用于:预先在所述当前用户界面操作中编译入标识宏定义;或者,修改所述当前用户界面操作中的宏定义为标识宏定义;其中,所述标识宏定义用于指示所述当前用户界面操作所处环境;通过检测所述当前用户界面操作中的标识宏定义,获取所述当前用户界面操作所处环境。
可选的,所述执行进程包括:用于计算视图布局的进程和/或用于绘制视图的进程。
可选的,当所述当前用户界面操作的所处环境是开发环境时,所述标识宏定义DEV=1;当所述当前用户界面操作的所处环境是线上环境时,所述标识宏定义DEV=0。
本发明第五实施例提供了一种计算机设备,包括处理器和存储器;所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种防止子线程进行用户界面操作的方法。
由于在第一至四实施例中已经对一种防止子线程进行用户界面操作的方法进行了详细说明,所以在本实施例中不对该方法的实施过程进行重复阐述。
本发明第六实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的一种防止子线程进行用户界面操作的方法。
由于在第一至四实施例中已经对一种防止子线程进行用户界面操作的方法进行了详细说明,所以在本实施例中不对该方法的实施过程进行重复阐述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (10)

1.一种防止子线程进行用户界面操作的方法,其特征在于,所述方法包括:
对执行视图渲染的执行进程是否被调用进行监测;
在监测到所述执行进程被调用时,判定所述当前用户界面操作是子线程的线程操作;
在判定所述当前用户界面操作为子线程的线程操作时,将所述当前用户界面操作调整为主线程的线程操作。
2.根据权利要求1所述的方法,其特征在于,所述执行进程包括:用于计算视图布局的进程和/或用于绘制视图的进程。
3.根据权利要求1所述的方法,其特征在于,所述将所述当前用户界面操作调整为主线程的线程操作,包括:
对所述当前用户界面操作的所处环境是开发环境或是处于线上环境进行检测;
在检测到所述当前用户界面操作的所处环境是开发环境的情况下,产生告警信息,以提醒开发端将所述当前用户界面操作开发为主线程的线程操作;
在检测到所述当前用户界面操作的所处环境是线上环境的情况下,将所述当前用户界面操作保存至预设代码块,并通过主线程的应用程序编程接口API对所述预设代码块进行处理以实现将所述当前用户界面操作跳转为主线程的线程操作。
4.根据权利要求3所述的方法,其特征在于,所述对所述当前用户界面操作的所处环境是开发环境或是处于线上环境进行检测包括:
预先在所述当前用户界面操作中编译入标识宏定义;或者,修改所述当前用户界面操作中的宏定义为标识宏定义;其中,所述标识宏定义用于指示所述当前用户界面操作所处环境;
通过检测所述当前用户界面操作中的标识宏定义,获取所述当前用户界面操作所处环境。
5.一种防止子线程进行用户界面操作的装置,其特征在于,所述装置包括:
监测模块,用于对执行视图渲染的执行进程是否被调用进行监测;
判定模块,用于在监测到所述执行进程被调用时,判定所述当前用户界面操作是子线程的线程操作;
调整模块,用于在判定所述当前用户界面操作为子线程的线程操作时,将所述当前用户界面操作调整为主线程的线程操作。
6.根据权利要求5所述的装置,其特征在于,所述调整模块包括:
检测单元,用于对所述当前用户界面操作的所处环境是开发环境或是处于线上环境进行检测;
告警单元,用于在检测到所述当前用户界面操作的所处环境是开发环境的情况下,产生告警信息,以提醒开发端将所述当前用户界面操作开发为主线程的线程操作;
跳转模块,用于在检测到所述当前用户界面操作的所处环境是线上环境的情况下,将所述当前用户界面操作保存至预设代码块,并通过主线程的应用程序编程接口API对所述预设代码块进行处理以实现将所述当前用户界面操作跳转为主线程的线程操作。
7.根据权利要求6所述的装置,其特征在于,所述检测单元具体用于:
预先在所述当前用户界面操作中编译入标识宏定义;或者,修改所述当前用户界面操作中的宏定义为标识宏定义;其中,所述标识宏定义用于指示所述当前用户界面操作所处环境;
通过检测所述当前用户界面操作中的标识宏定义,获取所述当前用户界面操作所处环境。
8.根据权利要求5所述的装置,其特征在于,所述执行进程包括:用于计算视图布局的进程和/或用于绘制视图的进程。
9.一种计算机设备,其特征在于,包括处理器和存储器;
所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现权利要求1至4中任一项所述的一种防止子线程进行用户界面操作的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1至4中任一项所述的一种防止子线程进行用户界面操作的方法。
CN201810259255.8A 2018-03-27 2018-03-27 一种防止子线程进行用户界面操作的方法及装置 Pending CN108595236A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810259255.8A CN108595236A (zh) 2018-03-27 2018-03-27 一种防止子线程进行用户界面操作的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810259255.8A CN108595236A (zh) 2018-03-27 2018-03-27 一种防止子线程进行用户界面操作的方法及装置

Publications (1)

Publication Number Publication Date
CN108595236A true CN108595236A (zh) 2018-09-28

Family

ID=63624683

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810259255.8A Pending CN108595236A (zh) 2018-03-27 2018-03-27 一种防止子线程进行用户界面操作的方法及装置

Country Status (1)

Country Link
CN (1) CN108595236A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491655A (zh) * 2018-10-08 2019-03-19 北京小米移动软件有限公司 一种输入事件处理方法及装置
CN109582565A (zh) * 2018-10-30 2019-04-05 努比亚技术有限公司 防止应用崩溃的方法、终端及计算机存储介质
CN109669752A (zh) * 2018-12-19 2019-04-23 北京达佳互联信息技术有限公司 一种界面绘制方法、装置及移动终端
CN110659098A (zh) * 2019-09-23 2020-01-07 北京城市网邻信息技术有限公司 数据更新方法、装置、终端设备及存储介质
CN111163345A (zh) * 2018-11-07 2020-05-15 杭州海康威视系统技术有限公司 一种图像渲染方法及装置
CN111966577A (zh) * 2020-07-06 2020-11-20 北京奇艺世纪科技有限公司 一种程序稳定性检测方法及装置
CN113806189A (zh) * 2020-06-16 2021-12-17 北京字节跳动网络技术有限公司 用户界面操作监控方法、装置、设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155741A (zh) * 2016-06-30 2016-11-23 努比亚技术有限公司 一种避免应用程序无响应的处理装置及方法
US20180018200A1 (en) * 2014-09-24 2018-01-18 Facebook, Inc. Multi-Threaded Processing of User Interfaces for an Application
CN107729094A (zh) * 2017-08-29 2018-02-23 口碑(上海)信息技术有限公司 一种用户界面渲染的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180018200A1 (en) * 2014-09-24 2018-01-18 Facebook, Inc. Multi-Threaded Processing of User Interfaces for an Application
CN106155741A (zh) * 2016-06-30 2016-11-23 努比亚技术有限公司 一种避免应用程序无响应的处理装置及方法
CN107729094A (zh) * 2017-08-29 2018-02-23 口碑(上海)信息技术有限公司 一种用户界面渲染的方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PAUL_XXB: "iOS子线程操作UI问题检查", 《HTTPS://WWW.CNBLOGS.COM/XIAOXIBO/P/4987306.HTML》 *
YYUUZHU: "Cocoa(iOS,OSX)安保系统设计实现", 《HTTP://WWW.COCOACHINA.COM/ARTICLES/21626》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491655A (zh) * 2018-10-08 2019-03-19 北京小米移动软件有限公司 一种输入事件处理方法及装置
CN109491655B (zh) * 2018-10-08 2022-07-15 北京小米移动软件有限公司 一种输入事件处理方法及装置
CN109582565A (zh) * 2018-10-30 2019-04-05 努比亚技术有限公司 防止应用崩溃的方法、终端及计算机存储介质
CN111163345A (zh) * 2018-11-07 2020-05-15 杭州海康威视系统技术有限公司 一种图像渲染方法及装置
CN109669752A (zh) * 2018-12-19 2019-04-23 北京达佳互联信息技术有限公司 一种界面绘制方法、装置及移动终端
CN110659098A (zh) * 2019-09-23 2020-01-07 北京城市网邻信息技术有限公司 数据更新方法、装置、终端设备及存储介质
CN110659098B (zh) * 2019-09-23 2021-01-29 北京城市网邻信息技术有限公司 数据更新方法、装置、终端设备及存储介质
CN113806189A (zh) * 2020-06-16 2021-12-17 北京字节跳动网络技术有限公司 用户界面操作监控方法、装置、设备和存储介质
CN113806189B (zh) * 2020-06-16 2024-07-09 北京字节跳动网络技术有限公司 用户界面操作监控方法、装置、设备和存储介质
CN111966577A (zh) * 2020-07-06 2020-11-20 北京奇艺世纪科技有限公司 一种程序稳定性检测方法及装置
CN111966577B (zh) * 2020-07-06 2023-09-08 北京奇艺世纪科技有限公司 一种程序稳定性检测方法及装置

Similar Documents

Publication Publication Date Title
CN108595236A (zh) 一种防止子线程进行用户界面操作的方法及装置
CN107257983B (zh) 用以完成被中断任务的选择性提醒
CN106775195B (zh) 一种悬浮按钮的控制方法及装置
CN106648779B (zh) 一种智能终端悬浮窗权限设置方法
CN107086955B (zh) 信息分享控制方法及装置
CN105955802A (zh) 一种移动终端的应用运行方法及移动终端
MX2007002574A (es) Sistema y metodo de control de proceso.
CN104571926B (zh) 触控方法及装置
CN107678782B (zh) 一种进程保护方法、装置、设备以及计算机可读存储介质
CN105528052A (zh) 电子设备功耗的降低方法、装置及具有显示屏的电子设备
CN105786356B (zh) 一种应用的操作方法及装置
CN104581806B (zh) 一种监测业务系统的方法及终端
CN104461021B (zh) 一种移动终端及其控制方法
US10241808B2 (en) Determining test application effectiveness
CN106909834A (zh) 一种数据处理方法和装置
CN102833120B (zh) 一种快速自动化测试中处理网管服务器异常的方法及系统
CN109783311A (zh) 断点行为的监控处理方法、装置、设备及可读存储介质
CN105743981B (zh) 监控方法、监控终端和监控系统
CN106294051A (zh) 一种马达测试方法及终端
CN105930058A (zh) 一种移动终端应用启动方法、装置及移动终端
CN105786341B (zh) 控制移动终端应用程序的方法和装置
CN107704155A (zh) 应用程序图标的展示方法、装置、终端和存储介质
CN106210321A (zh) 一种任务监管方法及终端
CN106909413A (zh) 一种数据处理方法和装置
Obermayer et al. Human-computer interaction for alert warning and attention allocation systems of the multimodal watchstation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180928