应用程序的启动方法及装置、可读存储介质、电子设备与流程

文档序号:23051935发布日期:2020-11-25 17:27阅读:143来源:国知局
应用程序的启动方法及装置、可读存储介质、电子设备与流程

本申请涉及软件开发技术领域,具体而言,涉及一种应用程序的启动方法及装置、可读存储介质、电子设备。



背景技术:

有一些第三方工具内部包含了移动设备的操作系统的交互组件,从而可以实现第三方工具与该操作系统对接。应用程序只需要让自己的应用主activity去继承第三方工具的交互组件中的activity即可实现在应用启动过程中的相应功能,无需应用程序自身去做相应功能的处理。因此,比较常见的应用程序启动方法就是继承第三方工具提供的对应操作系统的交互组件中的activity作为应用的主activity,然后直接启动。

但是,第三方工具的版本用到的移动设备操作系统(如安卓)的交互组件通常都是固定的,一旦移动设备操作系统版本进行更新,就可能会有各种问题(比如启动时出现黑屏)。因此,现有的应用程序的启动方法依赖于第三方工具,稳定性较差。



技术实现要素:

本申请实施例的目的在于提供一种应用程序的启动方法及装置、可读存储介质、电子设备,用以提高启动应用程序的稳定性。

第一方面,本申请实施例提供一种应用程序的启动方法,包括:当接收到应用程序的启动请求时,启动预先配置的所述应用程序对应的中转activity;所述中转activity用于执行所述应用程序启动前的预设功能的处理逻辑;当确定所述中转activity执行完所述处理逻辑后,启动所述应用程序对应的主activity,以实现所述应用程序的启动。

在本申请实施例中,与现有技术相比,通过预先配置的应用程序对应的中转activity来替代第三方工具中的交互组件的功能,在启动应用程序的主activity之前,先启动中转activity来执行预设功能的处理逻辑,当预设功能的处理逻辑处理完毕后,再启动主activity。一方面,不再依靠第三方工具,这样即便应用程序所对应的操作系统进行更新,也能通过中转activity所配置的功能稳定地启动应用程序,解决第三方工具与应用程序对应的操作系统可能存在的不适配的问题,提高启动应用程序的稳定性。另一方面,通过中转activity,还可以预先配置各种功能,提高启动应用程序的灵活性。

作为一种可能的实现方式,所述预设功能的处理逻辑包括:隐私权限的处理逻辑。

在本申请实施例中,通过中转activity进行隐私权限的处理,提高应用程序启动的过程中的安全性和可靠性。

作为一种可能的实现方式,所述启动所述应用程序对应的主activity,包括:根据所述启动请求获取所述应用程序的启动来源;基于所述启动来源,通过预先创建的指向所述主activity的类启动所述主activity;所述指向所述主activity的类用于保存所述主activity的启动信息。

在本申请实施例中,在启动主activity时,可以通过预先创建的指向主activity的用于保存主activity的启动信息的类来启动主activity,进而可以通过启动信息来快速且准确地启动主activity。

作为一种可能的实现方式,所述基于所述启动来源,通过预先创建的指向所述主activity的类启动所述主activity,包括:基于所述启动来源获取所述启动来源的信息;在启动所述主activity时,将所述启动来源的信息传入所述指向所述主activity的类中,以使所述指向所述主activity的类中包含所述启动来源的信息。

在本申请实施例中,启动信息中可以包含启动来源的信息,并且,该启动信息是在启动主activity时传入主activity所指向的类中的,这样可以保证启动来源的信息不丢失,且能够在启动主activity的过程被带入主activity中,进而保证应用程序的启动过程中的信息的完整性。

作为一种可能的实现方式,所述通过预先创建的指向所述主activity的类启动所述主activity,包括:将所述指向所述主activity的类传入所述主activity对应的启动activity中;所述启动activity用于启动所述主activity;启动所述启动activity,以实现启动所述主activity。

在本申请实施例中,可以通过主activity对应的启动activity来实现主activity的快速且准确地启动,提高启动应用程序的效率和稳定性。

作为一种可能的实现方式,在所述当接收到应用程序的启动请求时,启动预先配置的所述应用程序对应的中转activity之前,所述方法还包括:根据所述应用程序对应的第三方工具配置所述中转activity的所述处理逻辑。

在本申请实施例中,可以通过应用程序对应的第三方工具来配置中转activity的处理逻辑,进而可以使中转activity能够替代第三方工具来实现应用程序的稳定启动。

第二方面,本申请实施例提供一种应用程序的启动装置,包括:用于实现第一方面以及第一方面的任意一种可能的实现方式中所述的方法的功能模块。

第三方面,本申请实施例提供一种可读存储解释,所述可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时执行如第一方面以及第一方面的任意一种可能的实现方式中所述的方法。

第四方面,本申请实施例提供一种电子设备,包括存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行如第一方面以及第一方面的任意一种可能的实现方式中所述的方法。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的应用程序的启动方法的流程图;

图2为本申请实施例提供的处理隐私权限时的用户界面示意图;

图3为本申请实施例提供的应用程序的启动装置的功能模块结构框图;

图4为本申请实施例提供的电子设备的结构示意图。

图标:200-应用程序的启动装置;201-第一启动模块;202-第二启动模块;300-电子设备;301-存储器;302-处理器;303-显示器;304-输入输出模块。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

本申请实施例所提供的应用程序的启动方法可以应用于各种移动(电子)设备,比如手机、电脑、平板电脑等设备。其中,应用程序安装在这些电子设备上,运行于电子设备的操作系统(在本申请实施例中为安卓操作系统)上,当用户在电子设备上选择对应的应用程序(比如在主屏幕上点击应用程序对应的图标)或者从其他应用程序中拉起应用程序的启动时,电子设备便执行应用程序的启动流程。

其中,应用程序可以是各种游戏应用程序,也可以是各种聊天应用程序。

在介绍本申请实施例提供的技术方案之前,对涉及到的一些关键术语进行简单介绍。

activity:是android(安卓)组件中最基本也是最为常见用的四大组件(activity,service(服务),contentprovider(内容提供者),broadcastreceiver(广播接收器))之一。activity是一个应用程序组件,它提供一个窗口,用户可以通过该窗口实现和应用程序的交互。在一个安卓的应用程序中,一个activity通常就是一个单独的窗口,它上面可以显示一些控件,也可以监听并处理用户的事件(比如用户的操作),并做出响应。

启动模式:应用程序被启动的方式,一般是声明一个主activity,其它应用程序去调用它,就能启动该应用程序。

unity:一个多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。假设本申请实施例中的应用程序为游戏应用程序,那么该应用程序对应的第三方工具就可以是unity。

安卓:一种电子设备操作系统,为基于linux的自由及开放源代码的操作系统。

隐私权限:移动(电子)设备的操作系统中,定位、录音、读写存储、读取和发送短信、相机等称为隐私权限。从安卓6.0系统开始,要求应用程序使用隐私权限必须经过用户同意。

接下来请参照图1,为本申请实施例提供的应用程序的启动方法的流程图,该启动方法包括:

步骤101:当接收到应用程序的启动请求时,启动预先配置的应用程序对应的中转activity。中转activity用于执行应用程序启动前的预设功能的处理逻辑。

步骤102:当确定中转activity执行完处理逻辑后,启动应用程序对应的主activity,以实现应用程序的启动。

在本申请实施例中,与现有技术相比,通过预先配置的应用程序对应的中转activity来替代第三方工具中的交互组件的功能,在启动应用程序的主activity之前,先启动中转activity来执行预设功能的处理逻辑,当预设功能的处理逻辑处理完毕后,再启动主activity。一方面,不再依靠第三方工具,这样即便应用程序所对应的操作系统进行更新,也能通过中转activity所配置的功能稳定地启动应用程序,解决第三方工具与应用程序对应的操作系统可能存在的不适配的问题,提高启动应用程序的稳定性。另一方面,通过中转activity,还可以预先配置各种功能,提高启动应用程序的灵活性。

接下来对步骤101-步骤102的详细实施方式进行介绍。

在步骤101中,接收到的启动请求可以来自待启动的应用程序,即用户主动发起的应用程序的启动请求;比如点击设备显示屏幕上的应用程序图标。在这种情况下,对于设备来说,接收到的用户对应用程序的启动操作代表接收到应用程序的启动请求。接收到的启动请求还可以来自其他应用程序,比如用户在当前的应用程序中进行付款时,通常都会跳到第三方软件(比如微信、支付宝等)进行付款,此时当前的应用程序就会发起这个第三方软件的启动请求。在这种情况下,对于设备来说,接收到某个应用程序对特定应用程序的拉起(启动)请求时,代表接收到该特定应用程序的启动请求。

进一步地,当接收到应用程序的启动请求时,启动预先配置的应用程序对应的中转activity。对于中转activity,用于执行应用程序启动前的预设功能的处理逻辑。针对一个应用程序来说,在启动前的处理较常用的为:隐私权限的处理。因此,在步骤101中的预设功能的处理逻辑可以包括:隐私权限的处理逻辑。隐私权限可以包括:定位、录音、读写存储、读取和发送短信、相机等,这些隐私权限都可以加入到中转activity的处理逻辑中。那么在启动中转activity后,就会发起各种隐私权限的授权选项。举例来说,请参照图2,为本申请实施例提供的在中转activity进行隐私权限处理时的用户界面的举例图,如图2中所示,在该应用程序的启动界面上,不显示应用程序的主界面,而是显示“是否允许获取您的位置信息”的选项,并且附有“是”和“否”两种选项。图2所示的只是其中一种隐私权限的处理过程,如果需要对多种隐私权限进行处理,就按照与图2相同的实施方式依次对各个隐私权限进行处理,各个隐私权限之间的顺序不作限制,可以按照通用的顺序,也可以将隐私权限中与应用程序的功能最匹配进行最先的处理,比如:导航应用程序,需要实时获取定位信息,那么针对导航应用程序,可以最先处理定位的隐私权限。

在本申请实施例中,通过中转activity进行隐私权限的处理,提高应用程序启动的过程中的安全性和可靠性。

当然,除了隐私权限的处理,还可以是其他的预设功能,在实际应用时,在步骤101之前,该方法可以包括:根据应用程序对应的第三方工具配置中转activity的处理逻辑。

在这种实施方式中,在配置中转activity时,可以参考第三方工具的交互组件所具有的功能,来配置中转activity的功能。比如:假设第三方工具为unity,那么就根据unity的交互组件的功能来配置中转activity的功能。

在本申请实施例中,可以基于应用程序对应的第三方工具来配置中转activity的处理逻辑,进而可以使中转activity能够替代第三方工具来实现应用程序的稳定启动。

进一步地,在步骤101后,执行步骤102,即当确定中转activity执行完处理逻辑后,启动应用程序对应的主activity,以实现应用程序的启动。

在步骤102中,确定中转activity是否执行完处理逻辑可以通过检测是否得到隐私处理逻辑的结果来实现,比如:检测是否已得到用户对各个隐私权限的确认结果(如确认可以获取定位信息),如果检测到已经得到各个隐私权限的确认结果,可以确定中转activity已经执行完处理逻辑。除了这种方式,还可以检测中转activity是否还在运行或者是否还在执行其流程实现。当然,还可以在中转activity中加入反馈处理结果的流程,当中转activity执行完处理逻辑后,会自动反馈表征已经执行完毕的信息和执行完毕所得到的结果,这样设备就能够通过中转activity的反馈来确定中转activity是否执行完处理逻辑。

进一步地,当确定中转activity没有执行完处理逻辑时,就继续等待中转activity执行其处理逻辑。当确定中转activity执行完处理逻辑时,就启动应用程序对应的主activity。

作为一种可选的实施方式,启动应用程序对应的主activity,包括:根据启动请求获取应用程序的启动来源;基于启动来源,通过预先创建的指向主activity的类启动所述主activity;指向所述主activity的类用于保存主activity的启动信息。

在根据启动请求获取启动来源时,由于启动请求有不同的形式,假设启动请求来自待启动的应用程序,启动来源可以理解为应用程序本身。假设启动请求来自其他应用程序,启动来源即为发起该启动请求的应用程序。

进一步地,启动来源可以作为启动信息,在获取到启动来源后,可以基于该启动来源,通过预先创建的指向主activity的类启动主activity,指向主activity的类的作用是保存主activity的启动信息,这一过程相当于将启动来源的信息传入到该指向主activity的类中,进而使指向主activity的类可以通过启动信息启动主activity。

在本申请实施例中,在启动主activity时,可以通过预先创建的指向主activity的用于保存主activity的启动信息的类来启动主activity,进而可以通过启动信息来快速且准确地启动主activity。

进一步地,作为一种可选的实施方式,基于启动来源,通过预先创建的指向主activity的类启动主activity,包括:基于启动来源获取启动来源的信息;在启动主activity时,将启动来源的信息传入指向主activity的类中,以使指向所述主activity的类中包含启动来源的信息。

在这种实施方式中,可以理解,基于启动来源可以获取到启动来源的信息,假设启动请求来自待启动的应用程序,启动来源的信息即为应用程序本身的信息。假设启动请求来自其他应用程序,启动来源的信息即为发起该启动请求的应用程序的信息。在获取到启动来源的信息后,将该信息传入到指向主activity的类中,以使指向主activity的类中存储有启动来源的信息。

在本申请实施例中,启动信息中可以包含启动来源的信息,并且,该启动信息是在启动主activity时传入主activity所指向的类中的,这样可以保证启动来源的信息不丢失,且能够在启动主activity的过程被带入主activity中,进而保证应用程序的启动过程中的信息的完整性。

进一步地,作为一种可选的实施方式,通过预先创建的指向主activity的类启动主activity,包括:将指向主activity的类传入主activity对应的启动activity中;启动activity用于启动主activity;启动该启动activity,以实现启动主activity。

在这种实施方式中,指向主activity的类中存储有主activity的启动信息,当将这些启动信息传入启动activity中时,启动activity就可以利用这些启动信息来启动主activity。比如:假设启动请求来自待启动的应用程序,启动来源的信息即为应用程序本身的信息,当启动activity获取到该信息后,就会按照该信息采用从应用程序本身进行启动的模式来启动应用程序。假设启动请求来自其他应用程序,启动来源的信息即为发起该启动请求的应用程序的信息,当启动activity获取到发起该启动请求的应用程序的信息后,就会按照该信息采用从发起该启动请求的应用程序跳转到待启动的应用程序的模式来启动待启动的应用程序。

在本申请实施例中,可以通过主activity对应的启动activity来实现主activity的快速且准确地启动,提高启动应用程序的效率和稳定性。

为了便于理解本申请实施例所提供的应用程序的启动方法,接下来结合实例对该启动方法进行介绍。

假设应用程序中继承自activity类的中转activity的名称为activity0,需要在创建activity0时,配置activity0的处理隐私权限的功能。如果还需要配置其他功能,也在创建activity0时进行配置。

然后在开始应用程序的启动流程(即步骤101-步骤102的流程)时,先启动activity0,以使activity0执行其预先配置的处理逻辑。

当确认activity0的处理逻辑执行完毕之后,再调用设备的操作系统中拉起其它activity(假设把调用的流程对应的代码封装成一个名为startmainactivity的程序),startmainactivity程序的作用就是拉起继承自第三方工具提供的交互组件中的activity(比如unity的unityplayeractivity)的应用程序的主activity(假设主activity名为mainactivity);即实现主activity的启动。

在启动过程中,预先创建一个指向mainactivity的类(假设类名为intent),名为newintent,然后调用获取当前的intent的方式(假设该流程对应的代码被封装为名为getintent的程序)获取当前的应用程序的启动来源(也就是当前的应用程序是被谁拉起的,是从手机主界面启动的,还是从其他应用程序中拉起的)。

然后需要注意的一点,在调用newintent时,需要将srcintent(启动来源)的信息都传入到newintent中(即将启动来源的信息传入到类中),目的是保证启动来源的信息不丢失,拉起应用程序的主activity时还能将这些信息传输给对应的activity。

然后在主activity的启动activity(假设为startactivity)中传入newintent,进而mainactivity就会被拉起,应用程序(比如游戏)的主画面就会开始运行。

通过本申请实施例所提供的应用程序的启动方法,应用程序启动时,先启动中转的activity,再启动主activity,从而一定程度上脱离对第三方工具的依赖,而且传输过程中拉起activity的信息不丢失。此外,该方法可以不只是针对unity和安卓系统,也可以适用于其他操作系统通用的应用启动方案(无论是已经使用第三方工具和尚未使用第三方工具)。只是,在启动时,可能采用的不是activity进行启动的方式,而是采用的操作系统对应的组件进行启动的方式。

基于同一发明构思,请参照图3,本申请实施例中还提供一种应用程序的启动装置200,包括:第一启动模块201和第二启动模块202。

第一启动模块201,用于当接收到应用程序的启动请求时,启动预先配置的所述应用程序对应的中转activity;所述中转activity用于执行所述应用程序启动前的预设功能的处理逻辑;第二启动模块202,用于当确定所述中转activity执行完所述处理逻辑后,启动所述应用程序对应的主activity,以实现所述应用程序的启动。

可选的,第二启动模块202具体用于:根据所述启动请求获取所述应用程序的启动来源;基于所述启动来源,通过预先创建的指向所述主activity的类启动所述主activity;所述指向所述主activity的类用于保存所述主activity的启动信息。

可选的,第二启动模块202具体还用于:基于所述启动来源获取所述启动来源的信息;在启动所述主activity时,将所述启动来源的信息传入所述指向所述主activity的类中,以使所述指向所述主activity的类中包含所述启动来源的信息。

可选的,第二启动模块202具体还用于:将所述指向所述主activity的类传入所述主activity对应的启动activity中;所述启动activity用于启动所述主activity;启动所述启动activity,以实现启动所述主activity。

可选的,应用程序的启动装置还包括配置模块,用于根据所述应用程序对应的第三方工具配置所述中转activity的所述处理逻辑。

前述实施例中的应用程序的启动方法中的各实施方式和具体实例同样适用于图3的装置,通过前述对应用程序的启动方法的详细描述,本领域技术人员可以清楚地知道图3中的应用程序的启动装置200的实施方法,所以为了说明书的简洁,在此不再详述。

基于同一发明构思,请参照图4,本申请实施例还提供一种电子设备300,前述实施例中所述的应用程序的启动方法可应用于电子设备300。该电子设备300包括存储器301、处理器302以及应用程序的启动装置200。还可以包括:显示器303、输入输出模块304。该电子设备300可以是手机、电脑、平板电脑等,其可以是安卓操作系统,也可以是其他操作系统。

存储器301、处理器302、显示器303、输入输出模块304各元件之间直接或间接地电连接,以实现数据的传输或交互。例如,这些元件之间可以通过一条或多条通讯总线或信号总线实现电连接。应用程序的启动方法分别包括至少一个可以以软件或固件(firmware)的形式存储于存储器301中的软件功能模块,例如应用程序的启动装置200包括的软件功能模块或计算机程序。

存储器301可以存储各种软件程序以及模块,如本申请实施例提供的应用程序的启动方法及装置对应的程序指令/模块。处理器302通过运行存储在存储器301中的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现本申请实施例中的方法。此外,存储器301在处理器302运行程序的过程中,还可以存储创建的类、创建的中转activity等数据。

存储器301可以包括但不限于ram(randomaccessmemory,随机存取存储器),rom(readonlymemory,只读存储器),prom(programmableread-onlymemory,可编程只读存储器),eprom(erasableprogrammableread-onlymemory,可擦除只读存储器),eeprom(electricerasableprogrammableread-onlymemory,电可擦除只读存储器)等。

处理器302可以是一种集成电路芯片,具有信号处理能力。处理器302可以是通用处理器,包括cpu(centralprocessingunit,中央处理器)、np(networkprocessor,网络处理器)等;还可以是数字信号处理器、专用集成电路、现成可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

显示器303在电子设备300与用户之间提供一个交互界面(例如用户操作界面)或用于显示处理过程中产生的结果给用户参考。在本申请实施例中,显示器303可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器302进行计算和处理;比如将用户对应用程序的点击操作交由处理器302进行计算和处理。再比如,在本申请实施例中,显示器303可以用于显示在中转activity执行隐私权限的过程中,所产生的交互窗口。

输入输出模块304用于提供给用户输入数据实现用户与电子设备300的交互。输入输出模块304可以是,但不限于,鼠标和键盘等。例如,用户通过输入输出模块304输入指令,或者输入个人信息等。

可以理解,图4所示的结构仅为示意,电子设备300还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。

基于同一发明构思,本申请实施例还提供了一种可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被计算机运行时执行上述任一实施方式的应用程序的启动方法。

在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。

以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1