CN116382809B - 应用程序启动方法和电子设备 - Google Patents

应用程序启动方法和电子设备 Download PDF

Info

Publication number
CN116382809B
CN116382809B CN202310602251.6A CN202310602251A CN116382809B CN 116382809 B CN116382809 B CN 116382809B CN 202310602251 A CN202310602251 A CN 202310602251A CN 116382809 B CN116382809 B CN 116382809B
Authority
CN
China
Prior art keywords
application
domain name
address
cache
dns
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.)
Active
Application number
CN202310602251.6A
Other languages
English (en)
Other versions
CN116382809A (zh
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.)
Honor Device Co Ltd
Original Assignee
Honor Device 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202310602251.6A priority Critical patent/CN116382809B/zh
Publication of CN116382809A publication Critical patent/CN116382809A/zh
Application granted granted Critical
Publication of CN116382809B publication Critical patent/CN116382809B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/58Caching of addresses or names
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
    • H04M1/72406User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by software upgrading or downloading
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72448User interfaces specially adapted for cordless or mobile telephones with means for adapting the functionality of the device according to specific conditions
    • H04M1/72454User interfaces specially adapted for cordless or mobile telephones with means for adapting the functionality of the device according to specific conditions according to context-related or environment-related conditions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例提供了一种应用程序启动方法和电子设备,该方法由电子设备执行,包括:在接收到用户输入的第一操作时,识别当前场景,所述第一操作请求启动第一应用;若识别到当前场景为目标场景,则查询是否缓存有所述第一应用对应的第一域名,所述目标场景包括应用程序的启动场景;若缓存有所述第一应用对应的第一域名且缓存有效,则进行DNS预解析,以及将解析得到的IP地址更新至Java层缓存和/或Native层缓存。该方法可以减少DNS解析时间,加快小程序的启动过程。

Description

应用程序启动方法和电子设备
技术领域
本申请涉及电子技术领域,具体涉及一种应用程序启动方法和电子设备。
背景技术
当前,应用程序在电子设备中的运行方式有多种多样,例如有的应用程序可以通过电子设备的桌面图标启动运行,有的应用程序可以以小程序形式嵌入其他应用程序中,并在其他应用程序的运行界面启动运行。
在应用程序以小程序形式嵌入其他应用程序的场景中,从小程序开始启动到应用界面完全加载出来这一过程,通常需要进行域名系统(domain name system,DNS)解析,以获取互联网协议地址(internet protocol address,IP地址)进行网络访问。然而,对于相关技术来说,DNS解析时间通常较长,导致小程序启动过程较慢。
发明内容
本申请提供了一种应用程序启动方法和电子设备,能够减少DNS解析时间,加快小程序的启动过程。
第一方面,本申请提供一种应用程序启动方法,该方法由电子设备执行,包括:在接收到用户输入的第一操作时,识别当前场景,所述第一操作请求启动第一应用;若识别到当前场景为目标场景,则查询是否缓存有所述第一应用对应的第一域名,所述目标场景包括应用程序的启动场景;若缓存有所述第一应用对应的第一域名且缓存有效,则进行DNS预解析,以及将解析得到的IP地址更新至Java层缓存和/或Native层缓存。
其中,第一应用可以为嵌入其他应用程序中的应用小程序,也可以为独立的应用程序,第一操作可以为对第一应用的图标的点击操作,也可以为其他形式的启动运行应用的操作。目标场景可以包括应用程序的启动场景,例如可以为小程序启动场景。
当第一应用(应用小程序)开始启动,电子设备便开始执行DNS预解析过程。在一个实现方式中,电子设备的存储器中可以缓存有不同应用程序与不同域名之间的对应关系,例如可以是不同应用程序的应用标识与不同域名之间的对应关系。电子设备可以根据第一应用的应用标识和该对应关系,查询是否缓存有第一应用对应的第一域名。如果缓存有第一应用对应的第一域名,并且缓存的域名有效,则进行DNS预解析,并将解析得到的IP地址更新至Java层缓存和/或Native层缓存。
由此,通过预先将第一应用需要的IP地址缓存在Java层和Native层,那么在后续实际进行DNS解析时,能够从Java层缓存或Native层缓存直接获取到对应的IP地址的概率就会较大,便可以快速从Java层缓存或Native层缓存获取到对应的IP地址,减少与服务器之间的交互,从而减少了DNS解析时间,加快了小程序的启动过程。
结合第一方面,在第一方面的有些实现方式中,上述映射关系还包括每个域名的最后更新时间,所述方法还包括:若当前时间与所述第一域名的最后更新时间之间小于缓存有效阈值,则确定所述第一域名的缓存有效。
上述映射关系还包括每个域名的最后更新时间,也即对域名最后一次访问的时间。电子设备可以设置一个缓存有效阈值,如果当前时间与第一域名的最后更新时间之差小于缓存有效阈值,则认为缓存的第一域名有效,如果当前时间与第一域名的最后更新时间之差不小于缓存有效阈值,则认为缓存的第一域名无效。
结合第一方面,在第一方面的有些实现方式中,上述进行DNS预解析,以及将解析得到的IP地址更新至Java层缓存和/或Native层缓存,包括:
从Java层查询所述第一域名对应的IP地址;
若所述Java层缓存有所述第一域名对应的IP地址且缓存有效,则停止DNS预解析;
若所述Java层没有缓存所述第一域名对应的IP地址或缓存无效,则从Native层查询所述第一域名对应的IP地址;
若所述Native层缓存有所述第一域名对应的IP地址且缓存有效,则停止DNS预解析,以及将所述IP地址更新至所述Java层缓存;
若所述Native层没有缓存所述第一域名对应的IP地址或缓存无效,则向服务器查询所述第一域名对应的IP地址;
将从所述服务器查询到的IP地址更新至Java层缓存和Native层缓存,以及停止DNS预解析。
其中,DNS预解析过程也相当于经历了一次DNS解析,但与实际进行DNS解析过程不同的是,在DNS预解析过程中,当查询到第一域名对应的IP地址之后,并不需要将IP地址返回给第一应用,只需要将IP地址更新至Java层缓存和Native层缓存,以及停止该DNS预解析过程即可。这里将IP地址更新至Java层缓存和Native层缓存的目的在于后续实际进行DNS解析时,可以直接从Java层缓存或Native层缓存获取到对应的IP地址,无需在于服务器进行交互。
结合第一方面,在第一方面的有些实现方式中,在所述将解析得到的IP地址更新至Java层缓存和/或Native层缓存之后,所述方法还包括:在加载所述第一应用的运行界面之前,进行DNS解析。
其中,电子设备可以启动一个线程执行DNS预解析,另一个线程执行原有的应用程序启动过程,两个线程互不干扰。那么,在DNS预解析之后,在原有的程序启动过程中加载第一应用的运行界面之前,则可以进行实际的DNS解析过程。
在一个实现方式中,上述进行DNS解析,包括:
通过所述第一应用向Java层申请查询所述第一域名对应的IP地址;
若所述Java层缓存有所述第一域名对应的IP地址且缓存有效,则向所述第一应用返回所述IP地址;
若所述Java层没有缓存所述第一域名对应的IP地址或缓存无效,则通过所述第一应用向Native层申请查询所述第一域名对应的IP地址;
若所述Native层缓存有所述第一域名对应的IP地址且缓存有效,则向所述第一应用返回所述IP地址。
其中,该DNS解析过程可以采用Android操作系统具有的原生DNS缓存机制,通过Java层缓存、Native层缓存或者服务器获取域名对应的IP地址。因在本申请中已经进行过DNS预解析,IP地址在Java层缓存和Native层缓存有效的概率较大,因此大概率可以从Java层缓存或Native层缓存获取到对应的IP地址,减少了DNS解析时间。
结合第一方面,在第一方面的有些实现方式中,在向所述第一应用返回所述IP地址之后,所述方法还包括:通过所述第一应用根据所述IP地址访问网络资源,加载所述第一应用的运行界面。
在第一应用接收到IP地址后,便可以根据该IP地址访问网络资源,过程可以包括不限于根据IP地址通过TCP/IP三次握手协议,与服务器之间建立TCP连接,并发起http请求,以请求下载html等网络资源,最后解析html网络资源并渲染应用界面等过程。
结合第一方面,在第一方面的有些实现方式中,若没有缓存所述第一应用对应的第一域名或缓存失效,所述方法还包括:启动监听DNS解析任务;当监听到DNS解析过程,将所述第一域名与所述第一应用之间的对应关系、以及访问所述第一域名的时间进行缓存。
其中,在存储器中没有缓存第一应用对应的第一域名或者缓存失效的情况下,启动监听DNS解析任务,用于监听后续实际进行DNS解析的过程,并将监听到的域名进行缓存,以及缓存最后更新时间,便于后续第一应用再次访问该域名时,可以从缓存中查询域名进行DNS预解析。
在一个实现方式中,电子设备监听到DNS解析过程,以及获取所述第一应用访问的第一域名的过程可以包括:第一应用向Java层申请查询第一域名对应的IP地址。Java层查询是否缓存有第一域名对应的IP地址且缓存有效,若有缓存且缓存有效,则Java层向第一应用返回该IP地址,以及Java层返回第一域名;若没有缓存或缓存无效,则第一应用向Native层申请查询第一域名对应的IP地址。Native层查询是否缓存有第一域名对应的IP地址且缓存有效,若有缓存且缓存有效,Native层向第一应用返回该IP地址,将该IP地址更新至Java层缓存,以及返回第一域名;若没有缓存或缓存无效,则第一应用通过网络模块向服务器申请查询第一域名对应的IP地址。服务器向第一应用返回该IP地址,将IP地址更新至Java层缓存和Native层缓存,以及返回第一域名。
结合第一方面,在第一方面的有些实现方式中,上述启动监听DNS解析任务,包括:在预设的监听时长内执行监听DNS解析任务。
该实现方式中,因应用程序启动一般不会耗时过长,为减少电子设备的处理功耗,电子设备还可以设置一个监听时长,仅在该监听时长内执行监听DNS解析任务,超过该监听时长则不再进行监听。例如,监听时长可以设置为10秒。
第二方面,本申请提供一种装置,该装置包含在电子设备中,该装置具有实现上述第一方面及上述第一方面的可能实现方式中电子设备行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块或单元。例如,接收模块或单元、处理模块或单元等。
第三方面,本申请提供一种电子设备,电子设备包括:处理器、存储器和接口;处理器、存储器和接口相互配合,使得电子设备执行第一方面的技术方案中任意一种方法。
第四方面,本申请提供一种芯片,包括处理器。处理器用于读取并执行存储器中存储的计算机程序,以执行第一方面及其任意可能的实现方式中的方法。
可选地,芯片还包括存储器,存储器与处理器通过电路或电线连接。
进一步可选地,芯片还包括通信接口。
第五方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储了计算机程序,当计算机程序被处理器执行时,使得该处理器执行第一方面的技术方案中任意一种方法。
第六方面,本申请提供一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码在电子设备上运行时,使得该电子设备执行第一方面的技术方案中任意一种方法。
附图说明
图1是本申请实施例提供的一例小程序启动过程的场景示意图;
图2是本申请实施例提供的一例DNS解析过程的流程图;
图3是本申请实施例提供的一例电子设备的结构示意图;
图4是本申请实施例提供的一例电子设备的软件结构框图;
图5是本申请实施例提供的另一例小程序启动过程的场景示意图;
图6是本申请实施例提供的一例应用程序启动方法的流程示意图;
图7是本申请实施例提供的另一例应用程序启动方法的流程示意图;
图8是本申请实施例提供的又一例应用程序启动方法的流程示意图;
图9是本申请实施例提供的又一例应用程序启动方法的流程示意图;
图10是本申请实施例提供的又一例应用程序启动方法的流程示意图;
图11是本申请实施例提供的又一例应用程序启动方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者更多个该特征。
当前,应用程序在电子设备中的运行方式有多种多样,例如有的应用程序可以通过电子设备的桌面图标启动运行,有的应用程序可以以小程序形式嵌入其他应用程序中,并在其他应用程序的运行界面启动运行。
以应用程序以小程序形式嵌入其他应用程序的场景为例,先介绍一下应用程序的启动运行过程。示例性地,如图1所示,以微信®小程序为例,在微信®的运行界面上,用户按压该运行界面向下拉动,可以显示出最近使用的小程序图标。然后用户可以点击任意一个小程序图标,即可以触发启动该小程序运行。除此之外,有些小程序图标还可以显示在被嵌入的应用程序的运行界面上,用户在应用程序的运行界面上即可以直接点击小程序图标,以触发启动小程序运行。
当电子设备检测到用户对小程序图标的点击操作之后,可以将界面跳转至小程序的运行界面。一般地,从小程序开始启动到应用界面完全加载出来这一过程,通常需要进行DNS解析,以获取域名资源所在服务器的IP地址,然后根据IP地址通过TCP/IP三次握手协议,与服务器之间建立TCP连接,并发起http请求,以请求下载html等网络资源,最后解析html网络资源并渲染应用界面这一系列过程。对于该过程中的DNS解析步骤,相关技术中的解析时间通常较长,导致小程序启动过程较慢。
下面简单介绍一下DNS解析过程,对于电子设备使用Android操作系统的情况下,Android操作系统具有原生的DNS缓存机制,主要包括Java层缓存和Native层缓存。如图2所示,该DNS解析过程可以包括:
S1,应用程序向Java层申请查询域名对应的IP地址。
其中,应用程序的域名通常为如https://www.baidu.com/的数据格式,如果要访问该域名所对应的网络资源,需要将域名解析为IP地址(例如为IPV4:202.108.22.5),根据该IP地址与服务器建立连接后才能获取网络资源。因此,应用程序可以先向Java层申请查询域名对应的IP地址。
在当前的DNS缓存机制中,应用程序可以向Java层发送IP地址查询指令,Java层可以通过InetAddress.getByName(String host)接口进行DNS解析(即确认缓存是否命中)。
S2,Java层查询是否缓存有域名对应的IP地址且缓存有效,若有缓存且缓存有效则执行S3,若没有缓存或缓存无效则执行S4。
在Java层中通常会缓存有域名与对应IP地址之间的映射关系,以及缓存IP地址时的存储时间,例如缓存在addressCache中。并且,因域名对应的IP地址可能会发生变化以及Java层缓存容量限制,因此Java层还设置有缓存有效时长(time to live,TTL),即IP地址在Java层缓存的有效时长;如果IP地址的存储时长超过TTL,则说明该IP地址已经无效,或者Java层采用页面置换算法将先存储的映射关系替换为新的映射关系。
示例性地,TTL可以为2秒,Java层缓存容量可以为16个(即仅可以缓存16个域名与对应IP地址之间的映射关系)。假设Java层缓存有域名1与对应IP地址1之间的映射关系,存储时间为10:00:00,那么在10:00:02时间该映射关系中的IP地址1便已经无效。或者,Java层已缓存有16个域名与对应IP地址之间的映射关系,如果还要继续缓存新的映射关系的话,需要将该16个映射关系中的某个映射关系删掉,更新为新的映射关系。可选地,Java层可以选择最近最少使用算法(least recently used,LRU),选择最近最久未使用的页面(映射关系)给予删除替换。
因此,在Java层接收到应用程序发送的IP地址查询请求时,可以根据接收到的域名查询是否缓存有该域名对应的IP地址,即查询是否缓存有该域名与对应IP地址之间的映射关系。如果有缓存,则再查询缓存该IP地址时的存储时间是否已超过TTL,例如可以判断当前时间是否小于IP地址的存储时间+TTL,如果小于则说明缓存的IP地址有效,Java层便可以将对应的IP地址返回给应用程序。如果没有缓存该域名对应的IP地址,或者当前时间大于或者等于IP地址的存储时间+TTL(即缓存无效),则需要继续向Native层查询。
S3,Java层向应用程序返回该IP地址,以及执行S9。
S4,应用程序向Native层申请查询域名对应的IP地址。
在当前的DNS缓存机制中,应用程序可以向Native层发送IP地址查询指令,Native层可以通过android_getaddrinfofornet与Netd(network daemon)进程进行socket通信,最终通过resolv_cache_lookup函数进行DNS解析(即确认缓存是否命中)。
S5,Native层查询是否缓存有域名对应的IP地址且缓存有效,若有缓存且缓存有效则执行S6,若没有缓存或缓存无效则执行S7。
在Native层中通常也会缓存有域名与对应IP地址之间的映射关系,以及缓存IP地址时的存储时间。并且,因域名对应的IP地址可能会发生变化以及Native层缓存容量限制,因此Native层也可以设置有缓存有效时长TTL,即IP地址在Native层缓存的有效时长;如果IP地址的存储时长超过TTL,则说明该IP地址已经无效,或者Native层采用页面置换算法将先存储的映射关系替换为新的映射关系。
示例性地,TTL可以为44秒,Native层缓存容量可以为640个(即可以缓存640个域名与对应IP地址之间的映射关系)。假设Native层缓存有域名2与对应IP地址2之间的映射关系,存储时间为11:00:00,那么在11:00:44时间该映射关系中的IP地址2便已经无效。或者,Native层已缓存有640个域名与对应IP地址之间的映射关系,如果还要继续缓存新的映射关系的话,需要将该640个映射关系中的某个映射关系删掉,更新为新的映射关系。
因此,在Native层接收到应用程序发送的IP地址查询请求时,可以根据接收到的域名查询是否缓存有该域名对应的IP地址,即查询是否缓存有该域名与对应IP地址之间的映射关系。如果有缓存,则再查询缓存该IP地址时的存储时间是否已超过TTL,例如可以判断当前时间是否小于IP地址的存储时间+TTL,如果小于则说明缓存的IP地址有效,Native层便可以将对应的IP地址返回给应用程序。如果没有缓存该域名对应的IP地址,或者当前时间大于或者等于IP地址的存储时间+TTL(即缓存无效),则需要继续向服务器查询。
S6,Native层向应用程序返回该IP地址,以及执行S9,同时将该IP地址更新至Java层缓存。
这里需要说明的是,Native层查询到域名对应的IP地址后,除了可以向应用程序返回该IP地址,供应用程序访问网络之外,还可以将该IP地址也返回至Java层,供Java层进行缓存更新。如果用户之后再次触发启动同一个应用程序,且该应用程序的域名对应的IP地址在Java层缓存有效,便可以直接从Java层获取对应的IP地址。
S7,应用程序向服务器申请查询域名对应的IP地址。
即在Java层和Native层都未缓存命中要查询的IP地址时,应用程序便要向服务器进行查询。可选地,应用程序可以通过电子设备的网络模块(或者通信模块)向对应的服务器查询域名对应的IP地址。
S8,服务器向应用程序返回该IP地址,以及将IP地址更新至Java层缓存和Native层缓存。
这里需要说明的是,服务器查询到域名对应的IP地址后,除了可以通过网络模块向应用程序返回该IP地址,供应用程序访问网络之外,还可以将该IP地址也返回至Java层及Native层,供Java层和Native层进行缓存更新。如果用户之后再次触发启动同一个应用程序,且该应用程序的域名对应的IP地址在Java层缓存有效,便可以直接从Java层获取对应的IP地址;或者,在Java层缓存无效时,如果在Native层缓存有效,便可以直接从Native层获取对应的IP地址。
S9,应用程序根据IP地址与服务器之间建立连接。
其中,应用程序获取到域名对应的IP地址后,便可以根据IP地址与服务器之间建立连接(例如建立TCP连接),并发起http请求以请求下载html等网络资源,最后解析html网络资源并渲染应用界面等。
由上述DNS解析过程可知,应用程序要先从Java层查询域名对应的IP地址,如果Java层缓存无效的话再从Native层查询,如果Native层缓存也无效的话再从服务器查询。通常情况下,因Java层设置的TTL较短,大概率需要再从Native层或服务器去查询,并且在实际场景中,用户也并不会频繁的触发启动一个小程序,因此,较多的场景都是应用程序从服务器所获取IP地址,这一过程明显耗时较长。另外,一些应用程序在启动的过程中,可能需要进行多个DNS解析,若每个DNS都需要经过Java层缓存、Native层缓存以及服务器查询IP地址的话,解析多个DNS的耗时将会更长。
有鉴于此,本申请实施例提供一种应用程序启动方法,在用户触发启动应用程序时,应用程序可以提前进行DNS预解析,将解析到的IP地址缓存至Java层和Native层,那么后续实际进行DNS解析时便可以直接从Java层或Native层获取到对应的IP地址,减少与服务器之间的交互,以减少DNS解析时间,加快应用程序的启动过程。可以理解,本申请实施例的应用程序启动方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personaldigital assistant,PDA)等可以安装应用程序(application,APP)的电子设备上,本申请实施例对电子设备的具体类型不作任何限制。
示例性的,图3是本申请实施例提供的一例电子设备100的结构示意图。以电子设备100是手机为例,电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。图3中的天线1和天线2的结构仅为一种示例。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图4是本申请实施例的电子设备100的软件结构框图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。如图4所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图4所示,应用程序框架层可以包括活动管理服务(activity manage service,AMS)、DNS预解析模块以及Java层缓存。其中,AMS用于统一调度各应用进程,启动和管理activity的生命周期。DNS预解析模块用于动态维护多个应用程序的域名缓存,在检测到应用程序启动运行时,如果该域名缓存中缓存有应用程序的域名,则可以发起DNS解析过程,获取对应的IP地址,并将IP地址缓存至Java层和Native层,以供后续实际进行DNS解析时便可以直接从Java层或Native层获取到对应的IP地址。Java层缓存即用于缓存应用程序的域名与IP地址之间的映射关系,并设置IP地址的存储时间以及TTL。
除此之外,应用程序框架层还可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等(图4中未示出)。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括Native层缓存,用于缓存应用程序的域名与IP地址之间的映射关系,并设置IP地址的存储时间以及TTL。
系统库还可以包括例如:表面管理器(surface manager),媒体库(medialibraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等多个功能模块(图4中未示出)。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如: MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含网络模块、显示驱动等。网络模块例如可以包括无线通信模块,用于与服务器之间进行交互。显示驱动用于实现显示屏的显示效果,以呈现应用程序的运行界面。
为了便于理解,本申请以下实施例将以具有图3和图4所示结构的电子设备为例,结合附图和应用场景,对本申请实施例提供的应用程序启动方法进行具体阐述。
以所要启动的应用程序为微信®小程序为例,如上述图1所示,在微信®的运行界面上,用户按压该运行界面向下拉动,可以显示出最近使用的小程序图标。然后用户可以点击任意一个小程序图标,电子设备在接收到用户的点击操作之后开始向小程序的运行界面切换(例如图5所示),在切换过程中因需要进行DNS解析等过程,小程序的运行界面不会立刻显示出来,通常会经历一段时间的加载界面。
继续参见图5,加载界面的第一个阶段可以为空白界面,即产生第一个activity。在一些场景中,第一阶段可以包括多个空白界面,每个空白界面即为一个activity。然后,小程序的运行界面逐渐加载并显示出来,最终显示出完整的运行界面。其中,在当前的DNS解析机制中,DNS解析通常是在需要进行网络交互前进行,即在小程序的运行界面加载之前进行,由于在小程序启动过程中运行界面加载的过程执行时序比较靠后,那么DNS解析过程的执行时序也相应靠后,如果此时再去等待DNS解析的话会造成小程序启动过程较慢。因此,本申请实施例提出在第一个activity运行时提前进行DNS预解析过程,并将解析结果进行缓存,以供后续实际进行DNS解析时快速获取到对应的解析结果,以加快小程序的启动过程。
结合上述图4所示的软件结构,图6是本申请实施例提供的一例应用程序启动方法的流程示意图,该方法包括:
S21,第一应用接收到用户输入的第一操作。
其中,第一应用可以为嵌入其他应用程序中的应用小程序,也可以为独立的应用程序,本申请实施例对此不做限制。第一操作可以为对第一应用的图标的点击操作,也可以为其他形式的启动运行应用的操作。
S22,第一应用向AMS发送应用启动指令。
即第一应用在接收到用户输入的第一操作之后,可以向AMS发送应用启动指令,表征本应用将要启动运行,触发AMS进行应用进程调度以及activity的启动和管理。
可以理解,因本申请实施例是利用第一个activity运行时的时间来进行DNS预解析,那么相当于在第一应用启动后,启用两个线程,一个线程用来执行DNS预解析过程,另一个线程用来执行原有的从应用程序开始启动到应用界面完全加载出来的过程,包括activity启动、DNS解析等过程。
S23,AMS识别当前场景。
S24,若当前场景为目标场景,则AMS向DNS预解析模块发送DNS预解析指令。
其中,目标场景可以包括应用程序的启动场景,例如可以为小程序启动场景。如果AMS识别到当前场景为目标场景,则AMS便可以向DNS预解析模块发送DNS预解析指令,也即是说,当小程序一开始启动,DNS预解析模块便开始进行DNS预解析,充分利用了小程序启动过程中的空余时间提前进行DNS解析。可选地,DNS预解析指令中可以携带第一应用的应用标识,例如应用ID或程序ID等标识。
在一个可实现的方式中,AMS识别当前场景(如小程序启动场景)的过程可以为:当activity启动并执行performLaunchActivity时,AMS可以判断进程名是否为要优化的程序进程名,且上下文(context)信息中是否有该应用程序对应的小程序关键字信息;如果进程名是要优化的程序进程名且context信息中有该应用程序对应的小程序关键字信息,则确定当前场景为目标场景,即小程序启动场景。例如,微信®的小程序场景需要有key_app_id的关键字信息,支付宝®的小程序场景需要有app_id的关键字信息等。
S25,DNS预解析模块查询是否缓存有第一应用对应的第一域名且缓存有效,若有缓存且缓存有效则执行S26,若没有缓存或缓存无效则执行S41。
因应用程序对应的域名较少发生变化,因此在本申请实施例的存储器中缓存有不同应用程序与不同域名之间的对应关系,例如可以是不同应用程序的应用标识与不同域名之间的对应关系。可选地,一个应用程序可以对应有一个或多个域名,该一个或多个域名为该应用程序已使用过的或有效的域名。可以理解,当一个应用程序访问一个域名时,电子设备可以自动将该应用程序与域名的对应关系进行存储;或者,用户可以根据一些应用程序常用的访问域名,将应用程序与该域名的对应关系进行手动维护存储,以形成包含有不同应用程序与不同域名之间的对应关系的数据库。
在一个可实现的方式中,存储器中缓存的对应关系中还包括域名的最后更新时间,例如一个应用程序访问过域名1有多次,最后一次访问的时间为2023/5/4 10:00:00,则所缓存的对应关系中域名的最后更新时间即为该最后一次访问的时间。示例性地,存储器中缓存不同应用程序与不同域名之间的对应关系的方式可以如表1所示。
表1
可以理解,存储器中缓存的不同应用程序与不同域名之间的对应关系的方式不局限于表1所示的形式,可以以任意一种存储方式进行存储,本申请实施例对此不做限制。
在该实现方式中,如果DNS预解析模块接收到AMS发送的DNS预解析指令,DNS预解析模块可以根据DNS预解析指令中携带的第一应用的应用标识,从上述对应关系中查找是否有第一应用对应的第一域名。如果缓存有第一应用对应的第一域名,并且缓存的域名有效,则可以执行S26预解析的步骤。如果没有缓存第一应用对应的域名,或者缓存的域名无效,则可以执行S34监听DNS解析的步骤。
其中,DNS预解析模块确定缓存的域名是否有效的过程可以包括:首先设置一个缓存有效阈值,如果当前时间与域名的最后更新时间之差小于缓存有效阈值,则认为缓存的域名有效,如果当前时间与域名的最后更新时间之差不小于缓存有效阈值,则认为缓存的域名无效。示例性地,假设设置的缓存有效阈值为5天,如果当前时间与域名的最后更新时间之间小于5天(也即5天内再次访问该域名),则认为缓存的域名有效;如果当前时间与域名的最后更新时间之差不小于缓存有效阈值(也即再次访问该域名的时间超过5天),则认为缓存的域名无效。
S26,DNS预解析模块向Java层申请查询第一域名对应的IP地址。
S27,Java层查询是否缓存有第一域名对应的IP地址且缓存有效,若有缓存且缓存有效则执行S28,若没有缓存或缓存无效则执行S29。
S28,停止DNS预解析过程。
S29,DNS预解析模块向Native层申请查询第一域名对应的IP地址。
S30,Native层查询是否缓存有第一域名对应的IP地址且缓存有效,若有缓存且缓存有效则执行S31,若没有缓存或缓存无效则执行S32。
S31,将IP地址更新至Java层缓存,以及停止DNS预解析过程。
S32,DNS预解析模块通过网络模块向服务器申请查询第一域名对应的IP地址。
S33,服务器将IP地址更新至Java层缓存和Native层缓存,以及停止DNS预解析过程。
也即是说,对于S26至S33的步骤,在第一应用实际进行DNS解析之前,DNS预解析模块进行DNS预解析过程。该DNS预解析过程与实际进行DNS解析的过程类似(可以参见上述图2所示实施例的过程),都是需要从Java层或者Native层或者服务器查询第一域名对应的IP地址。但是不同的是,在DNS预解析过程,当查询到第一域名对应的IP地址之后,并不需要将IP地址返回给第一应用,只需要将IP地址更新至Java层缓存和Native层缓存,以及停止该DNS预解析过程即可。因为若将IP地址更新至Java层缓存和Native层缓存,那么在后续实际进行DNS解析时,能够从Java层缓存或Native层缓存直接获取到对应的IP地址的概率就会较大,便可以快速从Java层缓存或Native层缓存获取到对应的IP地址,减少与服务器之间的交互,从而减少了DNS解析时间。
在上述预解析之后,可以开始等待第一应用进行DNS解析过程,也即如上述图5所示的应用程序的运行界面加载之前,所开始的DNS解析,如图7所示,该过程可以包括:
S34,第一应用向Java层申请查询第一域名对应的IP地址。
S35,Java层查询是否缓存有第一域名对应的IP地址且缓存有效,若有缓存且缓存有效则执行S36,若没有缓存或缓存无效则执行S37。
S36,Java层向第一应用返回该IP地址。
S37,第一应用向Native层申请查询第一域名对应的IP地址。
S38,Native层查询是否缓存有第一域名对应的IP地址且缓存有效,若有缓存且缓存有效则执行S39。
S39,Native层向第一应用返回该IP地址。
其中,S34至S39的过程即第一应用进行DNS解析的过程。这里需要注意的是,因上述DNS预解析模块已经进行过DNS预解析,第一域名对应的IP地址已缓存在Java层和Native层,那么较大概率的情况下第一应用便可以从Java层或Native层获取到对应的IP地址,即不需要再从服务器去申请查询,减少了DNS解析时间。当然也有可能一些特殊场景或特殊情况下需要再次从服务器查询IP地址,此实施例中不再描述该过程。
由上述描述可知,在存储器中没有缓存第一应用对应的第一域名或者缓存失效的情况下,即S25中判断结果为否的情况下,DNS预解析模块可以启动监听DNS解析任务,用于监听后续实际进行DNS解析的过程,并将监听到的域名进行缓存,如图8所示,该过程可以包括:
S41,DNS预解析模块启动监听DNS解析任务。
可选地,DNS预解析模块还可以设置监听时长,在该监听时长内进行DNS解析过程的监听。示例性地,监听时长可以为TimeForListenMax,当在TimeForListenMax内进行监听DNS解析,当超过TimeForListenMax则不再监听DNS解析,例如,TimeForListenMax可以设置为10秒。
在DNS预解析模块启动了监听DNS解析任务之后,也可以开始等待第一应用进行DNS解析过程,也即如上述图5所示的应用程序的运行界面加载之前,所开始的DNS解析。
S42,第一应用向Java层申请查询第一域名对应的IP地址。
其中,第一域名可以为第一应用要访问的任意一个域名。
S43,Java层查询是否缓存有第一域名对应的IP地址且缓存有效,若有缓存且缓存有效则执行S44,若没有缓存或缓存无效则执行S46。
S44,Java层向第一应用返回该IP地址。
S45,Java层向DNS预解析模块返回第一域名,并执行S53。
S46,第一应用向Native层申请查询第一域名对应的IP地址。
S47,Native层查询是否缓存有第一域名对应的IP地址且缓存有效,若有缓存且缓存有效则执行S48,若没有缓存或缓存无效则执行S50。
S48,Native层向第一应用返回该IP地址。
S49,Native层将该IP地址更新至Java层缓存,以及向DNS预解析模块返回第一域名,并执行S53。
S50,第一应用通过网络模块向服务器申请查询第一域名对应的IP地址。
S51,服务器通过网络模块向第一应用返回该IP地址。
S52,服务器将IP地址更新至Java层缓存和Native层缓存,以及向DNS预解析模块返回第一域名,并执行S53。
S53,DNS预解析模块将接收到的第一域名与第一应用之间的对应关系进行缓存。
其中,在存储器中没有缓存第一应用对应的域名或者缓存失效的情况下,第一应用则需要执行原有的DNS解析流程,即依次向Java层、Native层和服务器申请查询域名对应的IP地址的过程,具体过程可以参见上述图2所示的过程,在此不再赘述。
在该实施例中,当Java层或Native层或服务器查询到第一域名对应的IP地址时,因DNS预解析模块已启动监听DNS解析任务,那么Java层或Native层或服务器便可以向DNS预解析模块返回第一域名,以供DNS预解析模块缓存该第一域名,以及缓存最后更新时间,便于后续第一应用再次访问该域名时,从缓存中查询域名进行DNS预解析。
上述应用程序启动方法,在用户触发启动应用程序时,应用程序可以提前进行DNS预解析,将解析到的IP地址缓存至Java层和Native层,那么后续实际进行DNS解析时便可以直接从Java层或Native层获取到对应的IP地址,减少与服务器之间的交互,以减少DNS解析时间,加快应用程序的启动过程。
对于上述应用程序启动方法的流程,下面以电子设备来执行为例,再次介绍一下本申请实施例提供的应用程序启动方法,如图9所示,该方法可以包括:
S101,在接收到用户输入的第一操作时,识别当前场景。
其中,第一操作可以为启动第一应用的操作,例如对第一应用的图标的点击操作,或者通过被嵌入应用程序的运行界面输入的启动第一应用的操作。
电子设备在接收到用户输入的第一操作时,除了执行第一应用的启动过程之外,可以并行执行DNS预解析过程,即开始识别当前场景,识别当前场景的过程可以参见上述实施例的描述,在此不再赘述。
S102,若当前场景为目标场景,则查询是否缓存有第一应用对应的第一域名,目标场景包括应用程序的启动场景。
如果电子设备识别到当前场景为目标场景,即应用程序启动场景,则可以根据存储器中缓存的不同应用程序与不同域名之间的对应关系,查询是否缓存有第一应用对应的第一域名。例如根据第一应用的应用标识与该对应关系,查询第一应用对应的第一域名。
S103,若缓存有第一应用对应的第一域名且缓存有效,则进行DNS预解析,以及将解析得到的IP地址更新至Java层缓存和/或Native层缓存。
在存储器中缓存有第一应用对应的第一域名且缓存有效的情况下,电子设备即可以进行DNS预解析,并将解析得到的IP地址更新至Java层缓存和/或Native层缓存,以及停止该DNS预解析过程。其中,DNS预解析的过程可以参见上述实施例中的S26至S33的步骤,在此不再赘述。由此,在后续实际进行DNS解析时,电子设备能够从Java层缓存或Native层缓存直接获取到对应的IP地址的概率就会较大,便可以快速从Java层缓存或Native层缓存获取到对应的IP地址,减少与服务器之间的交互,从而减少了DNS解析时间。
在一个实现方式中,电子设备也可以不缓存不同应用程序与不同域名之间的对应关系,即在电子设备识别到当前场景为目标场景时,直接根据第一应用要访问的域名进行DNS预解析,例如根据第一应用要访问的域名从Java层或Native层或服务器获取对应的IP地址,并将该IP地址更新至Java层缓存和/或Native层缓存。
在图9所示实施例的基础上,当电子设备进行DNS预解析之后,如果等待到第一应用实际进行DNS解析,则电子设备便可以从Java层缓存或Native层缓存获取第一应用对应的IP地址,如图10所示,上述应用程序启动方法还可以包括:
S104,从Java层查询第一域名对应的IP地址。
S105,若Java层缓存有第一域名对应的IP地址且缓存有效,则根据该IP地址访问网络资源。
S106,若Java层没有缓存第一域名对应的IP地址或缓存失效,则从Native层查询第一域名对应的IP地址。
S107,若Native层缓存有第一域名对应的IP地址且缓存有效,则根据该IP地址访问网络资源。
因第一域名对应的IP地址已缓存在Java层和Native层,那么较大概率的情况下可以从Java层或Native层获取到对应的IP地址,如果没有从Java层和Native层获取到对应的IP地址,也可以再从服务器去获取,该过程暂未列出。
在图9或图10所示实施例的基础上,如果存储器中没有缓存第一应用对应的域名或者缓存无效,则电子设备可以启动监听DNS解析任务,如图11所示,该过程可以包括:
S201,若没有缓存第一应用对应的域名或者缓存无效,则启动监听DNS解析任务。
S202,当监听到DNS解析过程,获取解析得到的IP地址,以及获取第一应用要访问的第一域名。
S203,将第一域名与第一应用之间的对应关系进行缓存,以及根据IP地址访问网络资源。
其中,DNS解析过程可以参见上述实施例中的S42至S51,在此不再赘述。电子设备在监听DNS解析任务时,如果监听到DNS解析过程,可以将第一应用要访问的第一域名进行缓存,便于后续第一应用再次访问该域名时,从缓存中查询域名进行DNS预解析。同时,还可以缓存该次访问第一域名的时间,作为第一域名的最后更新时间。
上述应用程序启动方法,在用户触发启动应用程序时,应用程序可以提前进行DNS预解析,将解析到的IP地址缓存至Java层和Native层,那么后续实际进行DNS解析时便可以直接从Java层或Native层获取到对应的IP地址,减少与服务器之间的交互,以减少DNS解析时间,加快应用程序的启动过程。
上文详细介绍了本申请实施例提供的应用程序启动方法的示例。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分为各个功能模块,例如检测单元、处理单元、显示单元等,也可以将两个或两个以上的功能集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例提供的电子设备,用于执行上述应用程序启动方法,因此可以达到与上述实现方法相同的效果。
在采用集成的单元的情况下,电子设备还可以包括处理模块、存储模块和通信模块。其中,处理模块可以用于对电子设备的动作进行控制管理。存储模块可以用于支持电子设备执行存储程序代码和数据等。通信模块,可以用于支持电子设备与其他设备的通信。
其中,处理模块可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processor,DSP)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、Wi-Fi芯片等与其他电子设备交互的设备。
在一个实施例中,当处理模块为处理器,存储模块为存储器时,本实施例所涉及的电子设备可以为具有图3所示结构的设备。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储了计算机程序,当计算机程序被处理器执行时,使得处理器执行上述任一实施例的应用程序启动方法。
本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的应用程序启动方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的应用程序启动方法。
其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (9)

1.一种应用程序启动方法,所述方法由电子设备执行,其特征在于,所述方法包括:
在接收到用户输入的第一操作时,识别当前场景,所述第一操作请求启动第一应用;
若识别到当前场景为目标场景且检测到所述第一应用对应的第一个活动activity已运行,则查询是否缓存有所述第一应用对应的第一域名,所述目标场景包括应用程序的启动场景;
若缓存有所述第一应用对应的第一域名且缓存有效,则在所述第一应用对应的第一个活动activity运行期间执行DNS预解析步骤:
从Java层查询所述第一域名对应的IP地址;
若所述Java层缓存有所述第一域名对应的IP地址且缓存有效,则停止DNS预解析,不将IP地址返回给所述第一应用;
若所述Java层没有缓存所述第一域名对应的IP地址或缓存无效,则从Native层查询所述第一域名对应的IP地址;
若所述Native层缓存有所述第一域名对应的IP地址且缓存有效,则停止DNS预解析,以及将所述IP地址更新至所述Java层缓存,不将IP地址返回给所述第一应用;
若所述Native层没有缓存所述第一域名对应的IP地址或缓存无效,则向服务器查询所述第一域名对应的IP地址;
将从所述服务器查询到的IP地址更新至Java层缓存和Native层缓存,不将IP地址返回给所述第一应用,以及停止DNS预解析;
在开始加载所述第一应用的运行界面之前,进行DNS解析以启动所述第一应用。
2.根据权利要求1所述的方法,其特征在于,所述查询是否缓存有所述第一应用对应的第一域名,包括:
根据所述第一应用的应用标识与预设的映射关系,查询是否缓存有所述第一应用对应的第一域名,所述映射关系包括不同应用程序与不同域名之间的对应关系。
3.根据权利要求2所述的方法,其特征在于,所述映射关系还包括每个域名的最后更新时间,所述方法还包括:
若当前时间与所述第一域名的最后更新时间之间小于缓存有效阈值,则确定所述第一域名的缓存有效。
4.根据权利要求1所述的方法,其特征在于,所述进行DNS解析,包括:
通过所述第一应用向Java层申请查询所述第一域名对应的IP地址;
若所述Java层缓存有所述第一域名对应的IP地址且缓存有效,则向所述第一应用返回所述IP地址;
若所述Java层没有缓存所述第一域名对应的IP地址或缓存无效,则通过所述第一应用向Native层申请查询所述第一域名对应的IP地址;
若所述Native层缓存有所述第一域名对应的IP地址且缓存有效,则向所述第一应用返回所述IP地址。
5.根据权利要求4所述的方法,其特征在于,在向所述第一应用返回所述IP地址之后,所述方法还包括:
通过所述第一应用根据所述IP地址访问网络资源,加载所述第一应用的运行界面。
6.根据权利要求1至5中任一项所述的方法,其特征在于,若没有缓存所述第一应用对应的第一域名或缓存失效,所述方法还包括:
启动监听DNS解析任务;
当监听到DNS解析过程,获取所述第一应用访问的第一域名;
将所述第一域名与所述第一应用之间的对应关系,以及访问所述第一域名的时间进行缓存。
7.根据权利要求6所述的方法,其特征在于,所述启动监听DNS解析任务,包括:
在预设的监听时长内执行监听DNS解析任务。
8.一种电子设备,其特征在于,包括:
一个或多个处理器;
一个或多个存储器;
所述存储器存储有一个或多个程序,当所述一个或多个程序被所述处理器执行时,使得所述电子设备执行如权利要求1至7中任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至7中任一项所述的方法。
CN202310602251.6A 2023-05-26 2023-05-26 应用程序启动方法和电子设备 Active CN116382809B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310602251.6A CN116382809B (zh) 2023-05-26 2023-05-26 应用程序启动方法和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310602251.6A CN116382809B (zh) 2023-05-26 2023-05-26 应用程序启动方法和电子设备

Publications (2)

Publication Number Publication Date
CN116382809A CN116382809A (zh) 2023-07-04
CN116382809B true CN116382809B (zh) 2023-10-20

Family

ID=86980916

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310602251.6A Active CN116382809B (zh) 2023-05-26 2023-05-26 应用程序启动方法和电子设备

Country Status (1)

Country Link
CN (1) CN116382809B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102137174A (zh) * 2010-12-29 2011-07-27 华为技术有限公司 域名系统缓存的方法、授权域名服务器、缓存域名服务器
CN103678508A (zh) * 2013-11-21 2014-03-26 北京奇虎科技有限公司 一种网页打开方法及装置
CN104363313A (zh) * 2014-12-02 2015-02-18 网宿科技股份有限公司 使用内容分发网络的网站的资源使用率保障方法和系统
CN106331213A (zh) * 2016-08-29 2017-01-11 广东欧珀移动通信有限公司 一种域名系统dns处理方法及装置
CN108156270A (zh) * 2017-11-27 2018-06-12 北京金山安全管理系统技术有限公司 域名请求处理方法和装置
CN108881515A (zh) * 2018-07-09 2018-11-23 迈普通信技术股份有限公司 域名解析方法、装置及网络设备
CN109510809A (zh) * 2018-09-17 2019-03-22 华为技术有限公司 域名访问方法和装置
CN110086895A (zh) * 2019-04-11 2019-08-02 天津字节跳动科技有限公司 域名解析方法、装置、介质和电子设备
CN110365810A (zh) * 2019-07-23 2019-10-22 中南民族大学 基于网络爬虫的域名缓存方法、装置、设备及存储介质
CN112000518A (zh) * 2020-08-13 2020-11-27 深圳本地宝新媒体技术有限公司 应用程序故障风险处理方法、装置、系统及终端、设备
CN114513488A (zh) * 2020-10-29 2022-05-17 腾讯科技(深圳)有限公司 资源访问方法、装置、计算机设备和存储介质
CN115801729A (zh) * 2022-11-15 2023-03-14 北京有竹居网络技术有限公司 Dns请求处理方法、装置、电子设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112015006397B4 (de) * 2015-03-31 2023-05-25 Nec Corporation DNS Optimierung für Multi-Source Download bei Hybridzugriff
US10778684B2 (en) * 2017-04-07 2020-09-15 Citrix Systems, Inc. Systems and methods for securely and transparently proxying SAAS applications through a cloud-hosted or on-premise network gateway for enhanced security and visibility
US11032127B2 (en) * 2017-06-26 2021-06-08 Verisign, Inc. Resilient domain name service (DNS) resolution when an authoritative name server is unavailable
CN116232667A (zh) * 2018-07-13 2023-06-06 三星电子株式会社 用于边缘计算服务的方法及其电子装置
US11252127B2 (en) * 2018-12-11 2022-02-15 Level 3 Communications, Llc Systems and methods for processing requests for content of a content distribution network
US11533291B1 (en) * 2021-06-09 2022-12-20 Level 3 Communications, Llc Federated DNS caching

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102137174A (zh) * 2010-12-29 2011-07-27 华为技术有限公司 域名系统缓存的方法、授权域名服务器、缓存域名服务器
CN103678508A (zh) * 2013-11-21 2014-03-26 北京奇虎科技有限公司 一种网页打开方法及装置
CN104363313A (zh) * 2014-12-02 2015-02-18 网宿科技股份有限公司 使用内容分发网络的网站的资源使用率保障方法和系统
CN106331213A (zh) * 2016-08-29 2017-01-11 广东欧珀移动通信有限公司 一种域名系统dns处理方法及装置
CN108156270A (zh) * 2017-11-27 2018-06-12 北京金山安全管理系统技术有限公司 域名请求处理方法和装置
CN108881515A (zh) * 2018-07-09 2018-11-23 迈普通信技术股份有限公司 域名解析方法、装置及网络设备
CN109510809A (zh) * 2018-09-17 2019-03-22 华为技术有限公司 域名访问方法和装置
CN110086895A (zh) * 2019-04-11 2019-08-02 天津字节跳动科技有限公司 域名解析方法、装置、介质和电子设备
CN110365810A (zh) * 2019-07-23 2019-10-22 中南民族大学 基于网络爬虫的域名缓存方法、装置、设备及存储介质
CN112000518A (zh) * 2020-08-13 2020-11-27 深圳本地宝新媒体技术有限公司 应用程序故障风险处理方法、装置、系统及终端、设备
CN114513488A (zh) * 2020-10-29 2022-05-17 腾讯科技(深圳)有限公司 资源访问方法、装置、计算机设备和存储介质
CN115801729A (zh) * 2022-11-15 2023-03-14 北京有竹居网络技术有限公司 Dns请求处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN116382809A (zh) 2023-07-04

Similar Documents

Publication Publication Date Title
EP4002108B1 (en) Application start method and electronic device
WO2021083378A1 (zh) 一种加速应用程序启动的方法及电子设备
WO2022262530A1 (zh) 内存管理的方法及电子设备
CN114461239B (zh) 软件升级系统和软件升级方法
CN114461588B (zh) 调节预读窗口的方法及电子设备
WO2019137252A1 (zh) 内存处理方法、电子设备、计算机可读存储介质
CN118567736A (zh) 一种预加载内存页的方法、电子设备及芯片系统
CN112783418B (zh) 一种存储应用程序数据的方法及移动终端
CN116382809B (zh) 应用程序启动方法和电子设备
CN113760192B (zh) 数据读取方法、装置、存储介质和程序产品
CN116456425A (zh) 配网方法及设备
CN117076089B (zh) 应用管理方法、终端设备及存储介质
CN117729561B (zh) 系统升级方法、终端及存储介质
CN116033333B (zh) 确定位置信息的方法、电子设备及可读存储介质
CN117130767B (zh) 回收内存的方法、电子设备及存储介质
CN116719633B (zh) 管理内存交换分区的方法和电子设备
CN116662150B (zh) 应用启动耗时检测方法及相关装置
CN117407925A (zh) 扩展内存隔离域的方法和电子设备
CN118277120A (zh) 一种管理系统服务的方法及相关装置
CN118466799A (zh) 应用查杀方法、终端设备及存储介质
CN116028531A (zh) 数据查询方法、装置、设备以及存储介质
CN117707718A (zh) 进程管理的方法、电子设备及可读存储介质
CN117708801A (zh) 一种资源访问方法及电子设备
CN116501481A (zh) 内存回收方法和电子设备
CN117632446A (zh) 管理内存的方法和电子设备

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
GR01 Patent grant
GR01 Patent grant