CN106778248B - 应用程序Activity启动的方法和装置 - Google Patents

应用程序Activity启动的方法和装置 Download PDF

Info

Publication number
CN106778248B
CN106778248B CN201611217717.7A CN201611217717A CN106778248B CN 106778248 B CN106778248 B CN 106778248B CN 201611217717 A CN201611217717 A CN 201611217717A CN 106778248 B CN106778248 B CN 106778248B
Authority
CN
China
Prior art keywords
activity
starting
mode
started
belongs
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
CN201611217717.7A
Other languages
English (en)
Other versions
CN106778248A (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.)
360 Digital Security Technology Group Co Ltd
Original Assignee
Beijing Qihoo Technology 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 Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201611217717.7A priority Critical patent/CN106778248B/zh
Publication of CN106778248A publication Critical patent/CN106778248A/zh
Application granted granted Critical
Publication of CN106778248B publication Critical patent/CN106778248B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Document Processing Apparatus (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了应用程序Activity启动的方法和装置,该方法包括:当监测到对任一应用程序的任一Activity的启动操作时,判断Activity所属的启动模式;若判断Activity所属于非默认启动模式,则基于该非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity;若相应任务栈中存在待启动Activity,对待启动Activity进行与其所属的启动模式对应的处理;通过Android系统启动处理后的Activity。本发明的技术方案不会造成由于占坑数据量太大而导致的跨进程访问失败以及Android系统的崩溃,提升了Android系统访问占坑数据时的稳定度。

Description

应用程序Activity启动的方法和装置
技术领域
本发明涉及计算机领域,具体而言,本发明涉及一种应用程序Activity启动的方法和一种应用程序Activity启动的装置。
背景技术
随着信息技术的发展,移动终端也从传统的数字移动终端发展到了智能移动终端。由于智能移动终端不但实现了传统的数字移动终端的所有功能,还通过安装多种应用程序来满足用户的各种需求,如娱乐需求、学习需求、购物需求、办公需求等。
由于智能移动终端的操作系统总会难免存在安全程序漏洞,所以所有应用程序都存在着用户私密数据被恶意应用程序窃取的危险。为了防止用户私密数据被恶意应用程序窃取,在智能移动终端上安装了基于预置安全策略限制程序行为的执行环境应用程序:沙箱应用程序,以保证用户在沙箱运行环境中启动需要被保护的应用程序时,不会存在被恶意应用程序窃取用户私密数据的危险。
由于沙箱采用占坑机制启动在沙箱运行环境中的被保护应用程序所对应的所有Activity;为了满足所有被保护应用程序都能够顺利启动其所对应的所有Activity,沙箱需要设置许多数量的占坑;随着应用程序的增多,其占坑数量也会增多;但当智能移动终端的操作系统在跨进程访问该庞大数量的占坑数据时,会大大增加了操作系统崩溃的机率。故如何保证智能移动终端的操作系统稳定地跨进程访问占坑数据,是解决上述问题的关键。
发明内容
为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案:
本发明的一个实施例提出了一种应用程序Activity启动的方法,包括:
当监测到对任一应用程序的任一Activity的启动操作时,基于应用程序在沙箱运行环境中的运行相关信息来判断Activity所属的启动模式;
若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity;
若相应任务栈中存在待启动Activity,对待启动Activity进行与其所属的启动模式对应的处理;
通过Android系统启动处理后的Activity。
优选地,若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity的步骤,具体包括:
若判断Activity所属的启动模式为singleTop启动模式,则基于Activity所属的singleTop启动模式,查找存在于交互界面的任务栈的顶部是否存在与Activity相同的待启动Activity。
优选地,若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity的步骤,还具体包括:
若判断Activity所属的启动模式为singleTask启动模式或singleInstance启动模式,则基于Activity所属的singleTask启动模式或singleInstance启动模式,查找所有任务栈中是否存在与Activity相同的待启动Activity。
优选地,对待启动Activity进行与其所属的启动模式对应的处理的步骤,包括:
若待启动Activity所属的启动模式为singleTop启动模式,基于预置的标识信息,对待启动Activity的标识进行设置;
其中,通过Android系统启动处理后的Activity的步骤,包括:
基于设置的标识和Activity所属的singleTop启动模式,通过Android系统启动Activity。
优选地,对待启动Activity进行与其所属的启动模式对应的处理的步骤,包括:
若待启动Activity所属的启动模式为singleTask启动模式,清除待启动Activity所在的任务栈中处于待启动Activity上面的所有Activity并基于预置的标识信息,对待启动Activity的标识进行设置,且若待启动Activity所在的任务栈不为交互界面的任务栈,则将待启动Activity所在的任务栈调到交互界面;
其中,通过Android系统启动处理后的Activity的步骤,包括:
基于设置的标识和Activity所属的singleTask启动模式,通过Android系统启动Activity。
优选地,对待启动Activity进行与其所属的启动模式对应的处理的步骤,包括:
若待启动Activity所属的启动模式为singleInstance启动模式,基于预置的标识信息,对待启动Activity的标识进行设置,且若待启动Activity所在的任务栈不为交互界面的任务栈,则将待启动Activity所在的任务栈调到交互界面;
其中,通过Android系统启动处理后的Activity的步骤,包括:
基于设置的标识和Activity所属的singleInstance启动模式,通过Android系统启动Activity。
优选地,该方法还包括:
在manifest配置文件信息中针对每个应用程序预注册一个满足默认启动模式的Activity的注册配置信息。
优选地,该方法还包括:
若判断Activity所属的启动模式为默认启动模式,基于manifest配置文件信息中的注册配置信息,通过Android系统创建并启动所属于默认启动模式的Activity。
优选地,该方法还包括:
若判断Activity所属的启动模式为singleTop启动模式或singleTask启动模式,且相应任务栈中不存在与Activity相同的待启动Activity时,基于manifest配置文件信息中的注册配置信息,通过Android系统创建并启动所属于singleTop启动模式或singleTask启动模式的Activity。
优选地,该方法还包括:
若判断Activity所属的启动模式为singleInstance启动模式,且相应任务栈中不存在与Activity相同的待启动Activity时,则建立Activity所属的任务栈;
基于manifest配置文件信息中的注册配置信息,通过Android系统在已建立的任务栈中创建并启动所属于singleInstance启动模式的Activity。
本发明的另一个实施例提出了一种应用程序Activity启动的装置,包括
监测模块,用于当监测到对任一应用程序的任一Activity的启动操作时,基于应用程序在沙箱运行环境中的运行相关信息来判断Activity所属的启动模式;
判断模块,用于若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity;
处理模块,用于若相应任务栈中存在待启动Activity,对待启动Activity进行与其所属的启动模式对应的处理;
第一启动模块,用于通过Android系统启动处理后的Activity。
优选地,判断模块,用于若判断Activity所属的启动模式为singleTop启动模式,则基于Activity所属的singleTop启动模式,查找存在于交互界面的任务栈的顶部是否存在与Activity相同的待启动Activity。
优选地,判断模块,还用于若判断Activity所属的启动模式为singleTask启动模式或singleInstance启动模式,则基于Activity所属的singleTask启动模式或singleInstance启动模式,查找所有任务栈中是否存在与Activity相同的待启动Activity。
优选地,处理模块,用于若待启动Activity所属的启动模式为singleTop启动模式,基于预置的标识信息,对待启动Activity的标识进行设置;
其中,启动模块,用于基于设置的标识和Activity所属的singleTop启动模式,通过Android系统启动Activity。
优选地,处理模块,还用于若待启动Activity所属的启动模式为singleTask启动模式,清除待启动Activity所在的任务栈中处于待启动Activity上面的所有Activity并基于预置的标识信息,对待启动Activity的标识进行设置,且若待启动Activity所在的任务栈不为交互界面的任务栈,则将待启动Activity所在的任务栈调到交互界面;
其中,启动模块,还用于基于设置的标识和Activity所属的singleTask启动模式,通过Android系统启动Activity。
优选地,处理模块,还用于若待启动Activity所属的启动模式为singleInstance启动模式,基于预置的标识信息,对待启动Activity的标识进行设置,且若待启动Activity所在的任务栈不为交互界面的任务栈,则将待启动Activity所在的任务栈调到交互界面;
其中,启动模块,还用于基于设置的标识和Activity所属的singleInstance启动模式,通过Android系统启动Activity。
优选地,该装置还包括:
注册模块,用于在manifest配置文件信息中针对每个应用程序预注册一个满足默认启动模式的Activity的注册配置信息。
优选地,该装置还包括:
第二启动模块,用于若判断Activity所属的启动模式为默认启动模式,基于manifest配置文件信息中的注册配置信息,通过Android系统创建并启动所属于默认启动模式的Activity。
优选地,该装置还包括:
第三启动模块,用于若判断Activity所属的启动模式为singleTop启动模式或singleTask启动模式,且相应任务栈中不存在与Activity相同的待启动Activity时,基于manifest配置文件信息中的注册配置信息,通过Android系统创建并启动所属于singleTop启动模式或singleTask启动模式的Activity。
优选地,该装置还包括:
建立模块,用于若判断Activity所属的启动模式为singleInstance启动模式,且相应任务栈中不存在与Activity相同的待启动Activity时,则建立Activity所属的任务栈;
第四启动模块,用于基于manifest配置文件信息中的注册配置信息,通过Android系统在已建立的任务栈中创建并启动所属于singleInstance启动模式的Activity。
本发明的技术方案中,当监测到对任一应用程序的任一Activity的启动操作时,判断Activity所属的启动模式;若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity;若相应任务栈中存在待启动Activity,对待启动Activity进行与其所属的启动模式对应的处理;通过Android系统启动处理后的Activity;实现了通过模拟非默认启动模式,来启动该任一应用程序的另外三种启动模式对应的Activity,从而代替了通过设置四种启动模式,来启动沙箱运行环境中的所有应用程序对应的Activity;由于通过设置四种启动模式来启动沙箱运行环境中的所有应用程序对应的Activity,需要Android系统访问沙箱配置文件信息中针对该任一应用程序设置的四种启动模式的占坑数据来实现;而通过模拟非默认启动模式,来启动该任一应用程序的另外三种启动模式对应的Activity,不会造成Android系统在访问该沙箱配置文件信息中的占坑数据时,由于设置的四种启动模式的占坑数据的数量太过旁大而导致的跨进程访问失败以及Android系统的崩溃的问题,同时,大大提升了Android系统访问该沙箱配置文件信息中的占坑数据时的稳定度;进一步为沙箱稳定运行和保护沙箱中的应用程序,提供了基础;同时,为用户也提供了良好地在沙箱中运行和使用应用程序的体验。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明一个实施例的应用程序Activity启动的方法的流程示意图;
图2为本发明中的一个优选实施例的建立并启动所属singleInstance启动模式的Activity的流程示意图;
图3为本发明中的另一个实施例的应用程序Activity启动的装置的结构框架示意图;
图4为本发明中的一个优选实施例的具有建立并启动所属singleInstance启动模式的Activity功能的应用程序Activity启动的装置的结构框架示意图;
图5为本发明中的又一个实施例的沙箱Task管理器的结构框架示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
图1为本发明一个实施例的应用程序Activity启动的方法的流程示意图。
需要说明的是,本实施例的执行主体是沙箱。其中,沙箱是通过重定向技术,把待保护的应用程序生成和修改的文件,定向到沙箱文件夹中的应用程序,且沙箱对移动终端的Android系统的访问也优先由自身处理,使得被沙箱保护的应用程序认为自己是运行在一个新的Android系统之中;但实际上该被沙箱保护的应用程序是运行在一个虚拟独立的系统之中。沙箱可以用来测试病毒或恶意应用程序,或在一个无线端上运行多个应用程序且相互无干扰等。
步骤S101:当监测到对任一应用程序的任一Activity的启动操作时,基于应用程序在沙箱运行环境中的运行相关信息来判断Activity所属的启动模式;步骤S102:若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity;步骤S103:若相应任务栈中存在待启动Activity,对待启动Activity进行与其所属的启动模式对应的处理;步骤S104:通过Android系统启动处理后的Activity。
本发明的技术方案中,当监测到对任一应用程序的任一Activity的启动操作时,判断Activity所属的启动模式;若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity;若相应任务栈中存在待启动Activity,对待启动Activity进行与其所属的启动模式对应的处理;通过Android系统启动处理后的Activity;实现了通过模拟非默认启动模式,来启动该任一应用程序的另外三种启动模式对应的Activity,从而代替了通过设置四种启动模式,来启动沙箱运行环境中的所有应用程序对应的Activity;由于通过设置四种启动模式来启动沙箱运行环境中的所有应用程序对应的Activity,需要Android系统访问沙箱配置文件信息中针对该任一应用程序设置的四种启动模式的占坑数据来实现;而通过模拟非默认启动模式,来启动该任一应用程序的另外三种启动模式对应的Activity,不会造成Android系统在访问该沙箱配置文件信息中的占坑数据时,由于设置的四种启动模式的占坑数据的数量太过旁大而导致的跨进程访问失败以及Android系统的崩溃的问题,同时,大大提升了Android系统访问该沙箱配置文件信息中的占坑数据时的稳定度;进一步为沙箱稳定运行和保护沙箱中的应用程序,提供了基础;同时,为用户也提供了良好地在沙箱中运行和使用应用程序的体验。
以下针对各个步骤的具体实现做进一步的说明:
步骤S101:当监测到对任一应用程序的任一Activity的启动操作时,基于应用程序在沙箱运行环境中的运行相关信息来判断Activity所属的启动模式。
其中,启动模式包括:Standard默认启动模式、singleTop启动模式、singleTask启动模式和singleInstance启动模式。
具体地,当沙箱监测到用户在沙箱运行环境中对任一应用程序的任一Activity的启动操作时,如,在浏览器应用程序中打开新的浏览页面的操作时;其中,对打开该新的浏览页面的操作即是对打开该新的浏览页面所对应的Activity的启动操作,沙箱基于该浏览器应用程序在沙箱运行环境中的启动新的浏览页面的指令或操作,来判断该打开新的浏览页面所对应的Activity所属的启动模式是:singleTask启动模式。
需要说明的是,对任一应用程序的任一Activity的启动操作可以是用户触发的启动操作,也可以是Android系统触发的启动操作,但当由Android系统触发该启动操作时,需要得到沙箱的预置安全策略的允许,才能由Android系统触发该启动操作;判断Activity所属的启动模式是针对用户在沙箱中对每个应用程序进行操作时,针对每个操作或每个操作指令所对应的或所包含的应用场景来判断该操作所对应的Activity所属的具体启动模式。
步骤S102:若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity。
具体地,若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity的步骤,具体包括:
若判断Activity所属的启动模式为singleTop启动模式,则基于Activity所属的singleTop启动模式,查找存在于交互界面的任务栈的顶部是否存在与Activity相同的待启动Activity。
例如,当沙箱监测到用户在沙箱运行环境中对任一应用程序的任一Activity的启动操作时,如,查看社交应用程序接收到的多个新消息的操作时;其中,查看社交应用程序接收到的多个新消息的操作即是查看社交应用程序接收到的多个新消息所对应的Activity的启动操作,沙箱基于该社交应用程序在沙箱运行环境中的查看社交应用程序接收到的多个新消息的指令或操作,来判断查看社交应用程序接收到的多个新消息所对应的Activity所属的启动模式是:singleTop启动模式,若沙箱判断该Activity所属的启动模式为singleTop启动模式,则基于Activity所属的singleTop启动模式,查找存在于当前沙箱交互界面,如,前台,的任务栈的顶部是否存在与该Activity相同的待启动Activity。
具体地,若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity的步骤,还具体包括:
若判断Activity所属的启动模式为singleTask启动模式或singleInstance启动模式,则基于Activity所属的singleTask启动模式或singleInstance启动模式,查找所有任务栈中是否存在与Activity相同的待启动Activity。
例如,沙箱基于浏览器应用程序在沙箱运行环境中的打开新的浏览页面的指令或操作,来判断该打开新的浏览页面所对应的Activity所属的启动模式是:singleTask启动模式,若沙箱判断该Activity所属的启动模式为singleTask启动模式,则基于Activity所属的singleTask启动模式,查找沙箱的所有任务栈中是否存在与Activity相同的待启动Activity。
例如,当沙箱监测到用户在沙箱运行环境中对任一应用程序的任一Activity的启动操作时,如,在浏览器应用程序中打开地图应用程序,用于确定用户在浏览器应用程序中进行搜索的地址的位置,然后用户退出浏览器应用程序后,用户再次打开地图应用程序的操作时;其中,打开地图应用程序的操作即是打开地图应用程序所对应的Activity的启动操作时,沙箱基于该地图应用程序在沙箱运行环境中的打开的指令或操作,来判断打开地图应用程序所对应的Activity所属的启动模式是:singleInstance启动模式,若沙箱判断该Activity所属的启动模式为singleInstance启动模式,则基于Activity所属的singleInstance启动模式,查找沙箱中所有任务栈中是否存在与Activity相同的待启动Activity。
步骤S103:若相应任务栈中存在待启动Activity,对待启动Activity进行与其所属的启动模式对应的处理。
具体地,对待启动Activity进行与其所属的启动模式对应的处理的步骤,包括:若待启动Activity所属的启动模式为singleTop启动模式,基于预置的标识信息,对待启动Activity的标识进行设置。
其中,步骤S104:通过Android系统启动处理后的Activity,包括:基于设置的标识和Activity所属的singleTop启动模式,通过Android系统启动Activity。
例如,基于Activity所属的singleTop启动模式,查找到存在于当前沙箱交互界面,如,前台,的任务栈的顶部存在与该Activity相同的待动Activity,则对该待启动Activity的flag标识设置标识信息:
FLAG_ACTIVITY_SINGLE_TOP值,该待启动Activity的flag标识设置标识信息代码如下:
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
将启动所属于singleTop启动模式的Activity的指令或操作、待启动Activity的标识信息转发至Android系统,Android系统读取启动所属于singleTop启动模式的Activity的指令或操作、待启动Activity的标识信息,并基于该singleTop启动模式,给已有的待启动Activity发送一个onNewIntent消息,从而启动该Activity。
具体地,对待启动Activity进行与其所属的启动模式对应的处理的步骤,包括:若待启动Activity所属的启动模式为singleTask启动模式,清除待启动Activity所在的任务栈中处于待启动Activity上面的所有Activity并基于预置的标识信息,对待启动Activity的标识进行设置,且若待启动Activity所在的任务栈不为交互界面的任务栈,则将待启动Activity所在的任务栈调到交互界面。
其中,步骤S104:通过Android系统启动处理后的Activity,包括:基于设置的标识和Activity所属的singleTask启动模式,通过Android系统启动Activity。
例如,基于Activity所属的singleTask启动模式,查找到沙箱的所有任务栈中存在与Activity相同的待启动Activity,将该任务栈中的已存在的待启动Activity上面的所有Activity销毁,然后对该待启动Activity的标识flag设置标识信息:FLAG_ACTIVITY_SINGLE_TOP值,对该待启动Activity的标识flag设置标识信息的代码如下:
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
且若该任务栈不是前台的任务栈,则将该任务栈调到前台。将启动所属于singleTask启动模式的Activity的指令或操作、待启动Activity的标识信息转发至Android系统,Android系统读取启动所属于singleTask启动模式的Activity的指令或操作、待启动Activity的标识信息,并基于该singleTask启动模式,给已有的待启动Activity发送一个onNewIntent消息,从而启动该Activity。
具体地,对待启动Activity进行与其所属的启动模式对应的处理的步骤,包括:若待启动Activity所属的启动模式为singleInstance启动模式,基于预置的标识信息,对待启动Activity的标识进行设置,且若待启动Activity所在的任务栈不为交互界面的任务栈,则将待启动Activity所在的任务栈调到交互界面。
其中,步骤S104:通过Android系统启动处理后的Activity,包括:基于设置的标识和Activity所属的singleInstance启动模式,通过Android系统启动Activity。
例如,基于Activity所属的singleInstance启动模式,查找到沙箱中所有任务栈中存在与Activity相同的待启动Activity,对该待启动Activity的标识flag设置一个标识信息:FLAG_ACTIVITY_SINGLE_TOP值,对该待启动Activity的标识flag设置一个标识信息代码如下:
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
且若该任务栈不是前台的任务栈,则将该任务栈调到前台。将启动所属于singleInstance启动模式的Activity的指令或操作、待启动Activity的标识信息转发至Android系统,Android系统读取启动所属于singleInstance启动模式的Activity的指令或操作、待启动Activity的标识信息,并基于该singleInstance启动模式,给已有的待启动Activity发送一个onNewIntent消息,从而启动该Activity。
具体地,该方法还包括:在manifest配置文件信息中针对每个应用程序预注册一个满足默认启动模式的Activity的注册配置信息。
例如,在沙箱的manifest配置文件信息中针对每个应用程序预注册一个满足默认启动模式的Activity的注册配置信息。
需要说明的是,Android系统在读取到该满足默认启动模式的Activity的注册配置信息时,会创建新的默认启动模式的Activity。
具体地,该方法还包括:若判断Activity所属的启动模式为默认启动模式,基于manifest配置文件信息中的注册配置信息,通过Android系统创建并启动所属于默认启动模式的Activity。
例如,当沙箱监测到用户在沙箱运行环境中对任一应用程序的任一Activity的启动操作时,如,打开并进入到社交应用程序操作界面的操作时;其中,打开并进入到社交应用程序操作界面的操作即是打开并进入到社交应用程序操作界面所对应的Activity的启动操作时,沙箱基于该社交应用程序在沙箱运行环境中的打开并进入到社交应用程序操作界面的指令或操作,来判断打开并进入到社交应用程序操作界面可以对应的Activity所属的启动模式是:默认启动模式,若沙箱判断该Activity所属的启动模式为默认启动模式,则将上述指令或操作转发至Android系统,Android系统通过读取上述指令或操作以及沙箱manifest配置文件信息中的注册配置信息,创建并启动所属于默认启动模式的Activity。
具体地,该方法还包括:若判断Activity所属的启动模式为singleTop启动模式或singleTask启动模式,且相应任务栈中不存在与Activity相同的待启动Activity时,基于manifest配置文件信息中的注册配置信息,通过Android系统创建并启动所属于singleTop启动模式或singleTask启动模式的Activity。
例如,若判断Activity所属的启动模式为singleTop启动模式,且通过查找发现存在于当前沙箱交互界面,如,前台,的任务栈的顶部不存在与该Activity相同的待启动Activity。则将启动Activity的指令或操作转发至Android系统,Android系统通过读取启动Activity的指令或操作以及沙箱manifest配置文件信息中的注册配置信息,创建并启动所属于默认启动模式的Activity。
例如,若判断Activity所属的启动模式为singleTask启动模式,且通过查找发现沙箱的所有任务栈中不存在与Activity相同的待启动Activity。则将启动Activity的指令或操作转发至Android系统,Android系统通过读取启动Activity的指令或操作以及沙箱manifest配置文件信息中的注册配置信息,创建并启动所属于默认启动模式的Activity。
具体地,如图2所示,该方法还包括:步骤S201:若判断Activity所属的启动模式为singleInstance启动模式,且相应任务栈中不存在与Activity相同的待启动Activity时,则建立Activity所属的任务栈;步骤S202:基于manifest配置文件信息中的注册配置信息,通过Android系统在已建立的任务栈中创建并启动所属于singleInstance启动模式的Activity。
例如,若判断Activity所属的启动模式为singleInstance启动模式,且通过查找发现所有任务栈中不存在与Activity相同的待启动Activity,则建立一个该Activity所属的任务栈,建立一个该Activity所属的任务栈代码如下:
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK|
Intent.FLAG_ACTIVITY_NEW_TASK);
将启动Activity的指令或操作和建立的任务栈的信息转发至Android系统,Android系统通过读取启动Activity的指令或操作以及沙箱manifest配置文件信息中的注册配置信息和建立的任务栈的信息,在已建立的任务栈中创建并启动所属于singleInstance启动模式的Activity。
需要说明的是,本实施例实现了仅通过在沙箱配置文件信息中针对该任一应用程序设置一种默认启动模式的占坑数据,来启动该任一应用程序的另外三种启动模式对应的Activity,从而代替了在沙箱配置文件信息中针对该任一应用程序设置四种启动模式的占坑数据,来启动沙箱运行环境中的所有应用程序对应的Activity;由于沙箱配置文件信息中设置该任一应用程序只有一个占坑数据量,在Android系统访问该沙箱配置文件信息中的占坑数据时,不会造成由于占坑数据量太大而导致的跨进程访问失败以及Android系统的崩溃。
图3为本发明中的另一个实施例的应用程序Activity启动的装置的结构框架示意图。
监测模块301,当监测到对任一应用程序的任一Activity的启动操作时,基于应用程序在沙箱运行环境中的运行相关信息来判断Activity所属的启动模式;判断模块302,若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity;处理模块303,若相应任务栈中存在待启动Activity,对待启动Activity进行与其所属的启动模式对应的处理;第一启动模块304,通过Android系统启动处理后的Activity。
以下针对各个模块的具体实现做进一步的说明:
监测模块301,当监测到对任一应用程序的任一Activity的启动操作时,基于应用程序在沙箱运行环境中的运行相关信息来判断Activity所属的启动模式。
其中,启动模式包括:Standard默认启动模式、singleTop启动模式、singleTask启动模式和singleInstance启动模式。
具体地,当监测模块301,监测到用户在沙箱运行环境中对任一应用程序的任一Activity的启动操作时,如,在浏览器应用程序中打开新的浏览页面的操作时;其中,对打开该新的浏览页面的操作即是对打开该新的浏览页面所对应的Activity的启动操作,监测模块301,基于该浏览器应用程序在沙箱运行环境中的启动新的浏览页面的指令或操作,来判断该打开新的浏览页面所对应的Activity所属的启动模式是:singleTask启动模式。
需要说明的是,对任一应用程序的任一Activity的启动操作可以是用户触发的启动操作,也可以是Android系统触发的启动操作,但当由Android系统触发该启动操作时,需要得到沙箱的预置安全策略的允许,才能由Android系统触发该启动操作;判断Activity所属的启动模式是针对用户在沙箱中对每个应用程序进行操作时,针对每个操作或每个操作指令所对应的或所包含的应用场景来判断该操作所对应的Activity所属的具体启动模式。
判断模块302,若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity。
具体地,判断模块302,若判断Activity所属的启动模式为singleTop启动模式,则基于Activity所属的singleTop启动模式,查找存在于交互界面的任务栈的顶部是否存在与Activity相同的待启动Activity。
例如,当判断模块302,监测到用户在沙箱运行环境中对任一应用程序的任一Activity的启动操作时,如,查看社交应用程序接收到的多个新消息的操作时;其中,查看社交应用程序接收到的多个新消息的操作即是查看社交应用程序接收到的多个新消息所对应的Activity的启动操作,判断模块302,基于该社交应用程序在沙箱运行环境中的查看社交应用程序接收到的多个新消息的指令或操作,来判断查看社交应用程序接收到的多个新消息所对应的Activity所属的启动模式是:singleTop启动模式,若判断模块302,判断该Activity所属的启动模式为singleTop启动模式,则基于Activity所属的singleTop启动模式,查找存在于当前沙箱交互界面,如,前台,的任务栈的顶部是否存在与该Activity相同的待启动Activity。
具体地,判断模块302,若判断Activity所属的启动模式为singleTask启动模式或singleInstance启动模式,则基于Activity所属的singleTask启动模式或singleInstance启动模式,查找所有任务栈中是否存在与Activity相同的待启动Activity。
例如,判断模块302,基于浏览器应用程序在沙箱运行环境中的打开新的浏览页面的指令或操作,来判断该打开新的浏览页面所对应的Activity所属的启动模式是:singleTask启动模式,若判断模块302,判断该Activity所属的启动模式为singleTask启动模式,则基于Activity所属的singleTask启动模式,查找沙箱的所有任务栈中是否存在与Activity相同的待启动Activity。
例如,当判断模块302,监测到用户在沙箱运行环境中对任一应用程序的任一Activity的启动操作时,如,在浏览器应用程序中打开地图应用程序,用于确定用户在浏览器应用程序中进行搜索的地址的位置,然后用户退出浏览器应用程序后,用户再次打开地图应用程序的操作时;其中,打开地图应用程序的操作即是打开地图应用程序所对应的Activity的启动操作时,判断模块302,基于该地图应用程序在沙箱运行环境中的打开的指令或操作,来判断打开地图应用程序所对应的Activity所属的启动模式是:singleInstance启动模式,若判断模块302,判断该Activity所属的启动模式为singleInstance启动模式,则基于Activity所属的singleInstance启动模式,查找沙箱中所有任务栈中是否存在与Activity相同的待启动Activity。
处理模块303,若相应任务栈中存在待启动Activity,对待启动Activity进行与其所属的启动模式对应的处理。
具体地,处理模块303,若待启动Activity所属的启动模式为singleTop启动模式,基于预置的标识信息,对待启动Activity的标识进行设置。
其中,启动模块304,基于设置的标识和Activity所属的singleTop启动模式,通过Android系统启动Activity。
例如,基于Activity所属的singleTop启动模式,查找到存在于当前沙箱交互界面,如,前台,的任务栈的顶部存在与该Activity相同的待动Activity,则处理模块303,对该待启动Activity的flag标识设置标识信息:FLAG_ACTIVITY_SINGLE_TOP值,该待启动Activity的flag标识设置标识信息代码如下:
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
启动模块304,将启动所属于singleTop启动模式的Activity的指令或操作、待启动Activity的标识信息转发至Android系统,Android系统读取启动所属于singleTop启动模式的Activity的指令或操作、待启动Activity的标识信息,并基于该singleTop启动模式,给已有的待启动Activity发送一个onNewIntent消息,从而启动该Activity。
处理模块303,若待启动Activity所属的启动模式为singleTask启动模式,清除待启动Activity所在的任务栈中处于待启动Activity上面的所有Activity并基于预置的标识信息,对待启动Activity的标识进行设置,且若待启动Activity所在的任务栈不为交互界面的任务栈,则将待启动Activity所在的任务栈调到交互界面;
其中,启动模块304,还用于基于设置的标识和Activity所属的singleTask启动模式,通过Android系统启动Activity。
例如,基于Activity所属的singleTask启动模式,查找到沙箱的所有任务栈中存在与Activity相同的待启动Activity,处理模块303,将该任务栈中的已存在的待启动Activity上面的所有Activity销毁,然后对该待启动Activity的标识flag设置标识信息:FLAG_ACTIVITY_SINGLE_TOP值,对该待启动Activity的标识flag设置标识信息的代码如下:
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
且若该任务栈不是前台的任务栈,则将该任务栈调到前台。启动模块304,将启动所属于singleTask启动模式的Activity的指令或操作、待启动Activity的标识信息转发至Android系统,Android系统读取启动所属于singleTask启动模式的Activity的指令或操作、待启动Activity的标识信息,并基于该singleTask启动模式,给已有的待启动Activity发送一个onNewIntent消息,从而启动该Activity。
具体地,处理模块303,还用于若待启动Activity所属的启动模式为singleInstance启动模式,基于预置的标识信息,对待启动Activity的标识进行设置,且若待启动Activity所在的任务栈不为交互界面的任务栈,则将待启动Activity所在的任务栈调到交互界面;
其中,启动模块304,还用于基于设置的标识和Activity所属的singleInstance启动模式,通过Android系统启动Activity。
例如,基于Activity所属的singleInstance启动模式,查找到沙箱中所有任务栈中存在与Activity相同的待启动Activity,处理模块303,对该待启动Activity的标识flag设置一个标识信息:
FLAG_ACTIVITY_SINGLE_TOP值,对该待启动Activity的标识flag设置一个标识信息代码如下:
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
且若该任务栈不是前台的任务栈,则将该任务栈调到前台。启动模块304,将启动所属于singleInstance启动模式的Activity的指令或操作、待启动Activity的标识信息转发至Android系统,Android系统读取启动所属于singleInstance启动模式的Activity的指令或操作、待启动Activity的标识信息,并基于该singleInstance启动模式,给已有的待启动Activity发送一个onNewIntent消息,从而启动该Activity。
具体地,该装置还包括:注册模块,在manifest配置文件信息中针对每个应用程序预注册一个满足默认启动模式的Activity的注册配置信息。
例如,注册模块,在沙箱的manifest配置文件信息中针对每个应用程序预注册一个满足默认启动模式的Activity的注册配置信息。
需要说明的是,Android系统在读取到该满足默认启动模式的Activity的注册配置信息时,会创建新的默认启动模式的Activity。
具体地,该装置还包括:第二启动模块,若判断Activity所属的启动模式为默认启动模式,基于manifest配置文件信息中的注册配置信息,通过Android系统创建并启动所属于默认启动模式的Activity。
例如,当判断模块302,监测到用户在沙箱运行环境中对任一应用程序的任一Activity的启动操作时,如,打开并进入到社交应用程序操作界面的操作时;其中,打开并进入到社交应用程序操作界面的操作即是打开并进入到社交应用程序操作界面所对应的Activity的启动操作时,判断模块302,基于该社交应用程序在沙箱运行环境中的打开并进入到社交应用程序操作界面的指令或操作,来判断打开并进入到社交应用程序操作界面可以对应的Activity所属的启动模式是:默认启动模式,若第二启动模块,判断该Activity所属的启动模式为默认启动模式,则将上述指令或操作转发至Android系统,Android系统通过读取上述指令或操作以及沙箱manifest配置文件信息中的注册配置信息,创建并启动所属于默认启动模式的Activity。
具体地,该装置还包括:第三启动模块,若判断Activity所属的启动模式为singleTop启动模式或singleTask启动模式,且相应任务栈中不存在与Activity相同的待启动Activity时,基于manifest配置文件信息中的注册配置信息,通过Android系统创建并启动所属于singleTop启动模式或singleTask启动模式的Activity。
例如,第三启动模块,若判断Activity所属的启动模式为singleTop启动模式,且通过查找发现存在于当前沙箱交互界面,如,前台,的任务栈的顶部不存在与该Activity相同的待启动Activity。则将启动Activity的指令或操作转发至Android系统,Android系统通过读取启动Activity的指令或操作以及沙箱manifest配置文件信息中的注册配置信息,创建并启动所属于默认启动模式的Activity。
例如,第三启动模块,若判断Activity所属的启动模式为singleTask启动模式,且通过查找发现沙箱的所有任务栈中不存在与Activity相同的待启动Activity。则将启动Activity的指令或操作转发至Android系统,Android系统通过读取启动Activity的指令或操作以及沙箱manifest配置文件信息中的注册配置信息,创建并启动所属于默认启动模式的Activity。
具体地,该装置还包括:如图4所示,建立模块401,若判断Activity所属的启动模式为singleInstance启动模式,且相应任务栈中不存在与Activity相同的待启动Activity时,则建立Activity所属的任务栈;第四启动模块402,基于manifest配置文件信息中的注册配置信息,通过Android系统在已建立的任务栈中创建并启动所属于singleInstance启动模式的Activity。
例如,建立模块401,若判断Activity所属的启动模式为singleInstance启动模式,且通过查找发现所有任务栈中不存在与Activity相同的待启动Activity,则建立一个该Activity所属的任务栈,建立一个该Activity所属的任务栈代码如下:
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK|
Intent.FLAG_ACTIVITY_NEW_TASK);
第四启动模块402,将启动Activity的指令或操作和建立的任务栈的信息转发至Android系统,Android系统通过读取启动Activity的指令或操作以及沙箱manifest配置文件信息中的注册配置信息和建立的任务栈的信息,在已建立的任务栈中创建并启动所属于singleInstance启动模式的Activity。
图5示出了本发明中的又一个实施例的沙箱Task管理器的结构框架示意图。其中,沙箱Task管理器包括应用程序Activity启动的装置。当沙箱Task管理器,监测到对任一应用程序的任一Activity的启动操作时,基于应用程序在沙箱运行环境中的运行相关信息来判断Activity所属的启动模式;若判断Activity所属的启动模式为非默认启动模式,则基于Activity所属的非默认启动模式,查找相应任务栈中是否存在与Activity相同的待启动Activity;若相应任务栈中存在待启动Activity,对待启动Activity进行与其所属的启动模式对应的处理;通过Android系统启动处理后的Activity。
上述沙箱Task管理器中的各个详细的执行过程均在上述实施例中详细阐述过,在此就不再赘述。
需要说明的是,上述实施例实现了仅通过在沙箱配置文件信息中针对该任一应用程序设置一种默认启动模式的占坑数据,来启动该任一应用程序的另外三种启动模式对应的Activity,从而代替了在沙箱配置文件信息中针对该任一应用程序设置四种启动模式的占坑数据,来启动沙箱运行环境中的所有应用程序对应的Activity;由于沙箱配置文件信息中设置该任一应用程序只有一个占坑数据量,在Android系统访问该沙箱配置文件信息中的占坑数据时,不会造成由于占坑数据量太大而导致的跨进程访问失败以及Android系统的崩溃。
本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随即存储器)、EPROM(Erasable ProgrammableRead-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically ErasableProgrammable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (20)

1.一种应用程序Activity启动的方法,其特征在于,包括:
当沙箱监测到在沙箱运行环境中对任一应用程序的任一Activity的启动操作时,基于所述应用程序在沙箱运行环境中的运行相关信息来判断所述Activity所属的启动模式;
若判断所述Activity所属的启动模式为非默认启动模式,则基于所述Activity所属的非默认启动模式,查找相应任务栈中是否存在与所述Activity相同的待启动Activity;
若相应任务栈中存在所述待启动Activity,对所述待启动Activity进行与其所属的启动模式对应的处理;
通过Android系统启动处理后的Activity。
2.根据权利要求1所述的方法,其中,若判断所述Activity所属的启动模式为非默认启动模式,则基于所述Activity所属的非默认启动模式,查找相应任务栈中是否存在与所述Activity相同的待启动Activity的步骤,具体包括:
若判断所述Activity所属的启动模式为singleTop启动模式,则基于所述Activity所属的singleTop启动模式,查找存在于交互界面的任务栈的顶部是否存在与所述Activity相同的待启动Activity。
3.根据权利要求1所述的方法,其中,若判断所述Activity所属的启动模式为非默认启动模式,则基于所述Activity所属的非默认启动模式,查找相应任务栈中是否存在与所述Activity相同的待启动Activity的步骤,还具体包括:
若判断所述Activity所属的启动模式为singleTask启动模式或singleInstance启动模式,则基于所述Activity所属的singleTask启动模式或singleInstance启动模式,查找所有任务栈中是否存在与所述Activity相同的待启动Activity。
4.根据权利要求1所述的方法,其中,所述对所述待启动Activity进行与其所属的启动模式对应的处理的步骤,包括:
若待启动Activity所属的启动模式为singleTop启动模式,基于预置的标识信息,对所述待启动Activity的标识进行设置;
其中,所述通过Android系统启动处理后的Activity的步骤,包括:
基于设置的标识和所述Activity所属的singleTop启动模式,通过Android系统启动Activity。
5.根据权利要求1所述的方法,其中,所述对所述待启动Activity进行与其所属的启动模式对应的处理的步骤,包括:
若待启动Activity所属的启动模式为singleTask启动模式,清除待启动Activity所在的任务栈中处于所述待启动Activity上面的所有Activity并基于预置的标识信息,对所述待启动Activity的标识进行设置,且若待启动Activity所在的任务栈不为交互界面的任务栈,则将待启动Activity所在的任务栈调到交互界面;
其中,所述通过Android系统启动处理后的Activity的步骤,包括:
基于设置的标识和所述Activity所属的singleTask启动模式,通过Android系统启动Activity。
6.根据权利要求1所述的方法,其中,所述对所述待启动Activity进行与其所属的启动模式对应的处理的步骤,包括:
若待启动Activity所属的启动模式为singleInstance启动模式,基于预置的标识信息,对所述待启动Activity的标识进行设置,且若待启动Activity所在的任务栈不为交互界面的任务栈,则将待启动Activity所在的任务栈调到交互界面;
其中,所述通过Android系统启动处理后的Activity的步骤,包括:
基于设置的标识和所述Activity所属的singleInstance启动模式,通过Android系统启动Activity。
7.根据权利要求1-6任一项所述的方法,其中,在所述若判断所述Activity所属的启动模式为非默认启动模式,则基于所述Activity所属的非默认启动模式,查找相应任务栈中是否存在与所述Activity相同的待启动Activity之前,还包括:
在manifest配置文件信息中针对每个应用程序预注册一个满足默认启动模式的Activity的注册配置信息。
8.根据权利要求7所述的方法,其中,还包括:
若判断所述Activity所属的启动模式为默认启动模式,基于manifest配置文件信息中的所述注册配置信息,通过Android系统创建并启动所属于默认启动模式的所述Activity。
9.根据权利要求7所述的方法,其中,还包括:
若判断所述Activity所属的启动模式为singleTop启动模式或singleTask启动模式,且相应任务栈中不存在与所述Activity相同的待启动Activity时,基于manifest配置文件信息中的所述注册配置信息,通过Android系统创建并启动所属于singleTop启动模式或singleTask启动模式的Activity。
10.根据权利要求7所述的方法,其中,还包括:
若判断所述Activity所属的启动模式为singleInstance启动模式,且相应任务栈中不存在与所述Activity相同的待启动Activity时,则建立所述Activity所属的任务栈;
基于manifest配置文件信息中的所述注册配置信息,通过Android系统在所述已建立的任务栈中创建并启动所属于singleInstance启动模式的Activity。
11.一种应用程序Activity启动的装置,其特征在于,包括:
监测模块,用于当沙箱监测到在沙箱运行环境中对任一应用程序的任一Activity的启动操作时,基于所述应用程序在沙箱运行环境中的运行相关信息来判断所述Activity所属的启动模式;
判断模块,用于若判断所述Activity所属的启动模式为非默认启动模式,则基于所述Activity所属的非默认启动模式,查找相应任务栈中是否存在与所述Activity相同的待启动Activity;
处理模块,用于若相应任务栈中存在所述待启动Activity,对所述待启动Activity进行与其所属的启动模式对应的处理;
第一启动模块,用于通过Android系统启动处理后的Activity。
12.根据权利要求11所述的装置,其中,所述判断模块,用于若判断所述Activity所属的启动模式为singleTop启动模式,则基于所述Activity所属的singleTop启动模式,查找存在于交互界面的任务栈的顶部是否存在与所述Activity相同的待启动Activity。
13.根据权利要求11所述的装置,其中,所述判断模块,还用于若判断所述Activity所属的启动模式为singleTask启动模式或singleInstance启动模式,则基于所述Activity所属的singleTask启动模式或singleInstance启动模式,查找所有任务栈中是否存在与所述Activity相同的待启动Activity。
14.根据权利要求11所述的装置,其中,所述处理模块,用于若待启动Activity所属的启动模式为singleTop启动模式,基于预置的标识信息,对所述待启动Activity的标识进行设置;
其中,所述启动模块,用于基于设置的标识和所述Activity所属的singleTop启动模式,通过Android系统启动Activity。
15.根据权利要求11所述的装置,其中,所述处理模块,还用于若待启动Activity所属的启动模式为singleTask启动模式,清除待启动Activity所在的任务栈中处于所述待启动Activity上面的所有Activity并基于预置的标识信息,对所述待启动Activity的标识进行设置,且若待启动Activity所在的任务栈不为交互界面的任务栈,则将待启动Activity所在的任务栈调到交互界面;
其中,所述启动模块,还用于基于设置的标识和所述Activity所属的singleTask启动模式,通过Android系统启动Activity。
16.根据权利要求11所述的装置,其中,所述处理模块,还用于若待启动Activity所属的启动模式为singleInstance启动模式,基于预置的标识信息,对所述待启动Activity的标识进行设置,且若待启动Activity所在的任务栈不为交互界面的任务栈,则将待启动Activity所在的任务栈调到交互界面;
其中,所述启动模块,还用于基于设置的标识和所述Activity所属的singleInstance启动模式,通过Android系统启动Activity。
17.根据权利要求11-16任一项所述的装置,其中,还包括:
注册模块,用于在manifest配置文件信息中针对每个应用程序预注册一个满足默认启动模式的Activity的注册配置信息。
18.根据权利要求17所述的装置,其中,还包括:
第二启动模块,用于若判断所述Activity所属的启动模式为默认启动模式,基于manifest配置文件信息中的所述注册配置信息,通过Android系统创建并启动所属于默认启动模式的所述Activity。
19.根据权利要求17所述的装置,其中,还包括:
第三启动模块,用于若判断所述Activity所属的启动模式为singleTop启动模式或singleTask启动模式,且相应任务栈中不存在与所述Activity相同的待启动Activity时,基于manifest配置文件信息中的所述注册配置信息,通过Android系统创建并启动所属于singleTop启动模式或singleTask启动模式的Activity。
20.根据权利要求17所述的装置,其中,还包括:
建立模块,用于若判断所述Activity所属的启动模式为singleInstance启动模式,且相应任务栈中不存在与所述Activity相同的待启动Activity时,则建立所述Activity所属的任务栈;
第四启动模块,用于基于manifest配置文件信息中的所述注册配置信息,通过Android系统在所述已建立的任务栈中创建并启动所属于singleInstance启动模式的Activity。
CN201611217717.7A 2016-12-26 2016-12-26 应用程序Activity启动的方法和装置 Active CN106778248B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611217717.7A CN106778248B (zh) 2016-12-26 2016-12-26 应用程序Activity启动的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611217717.7A CN106778248B (zh) 2016-12-26 2016-12-26 应用程序Activity启动的方法和装置

Publications (2)

Publication Number Publication Date
CN106778248A CN106778248A (zh) 2017-05-31
CN106778248B true CN106778248B (zh) 2020-07-14

Family

ID=58925983

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611217717.7A Active CN106778248B (zh) 2016-12-26 2016-12-26 应用程序Activity启动的方法和装置

Country Status (1)

Country Link
CN (1) CN106778248B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107832113A (zh) * 2017-10-26 2018-03-23 青岛海信移动通信技术股份有限公司 一种Android系统应用程序的界面显示方法及装置
CN108664282B (zh) * 2018-03-26 2021-07-02 Oppo广东移动通信有限公司 防止在锁屏下开启应用超时的方法、装置及电子设备
CN108595228B (zh) 2018-05-10 2021-03-12 Oppo广东移动通信有限公司 应用程序预测模型建立方法、装置、存储介质及移动终端
CN108595227A (zh) 2018-05-10 2018-09-28 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
CN108710513B (zh) * 2018-05-15 2020-07-21 Oppo广东移动通信有限公司 应用程序启动方法、装置、存储介质及终端
CN108804157A (zh) 2018-06-05 2018-11-13 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及终端
CN114397980A (zh) 2018-11-26 2022-04-26 华为技术有限公司 一种应用显示方法及电子设备
CN112241296B (zh) * 2019-07-17 2024-03-22 北京密境和风科技有限公司 一种应用中的页面切换方法、装置
CN116450279A (zh) * 2022-01-10 2023-07-18 北京有竹居网络技术有限公司 一种虚拟任务栈的处理方法及装置
CN115080889B (zh) * 2022-07-26 2023-01-17 阿里巴巴(中国)有限公司 一种显示模式切换方法及装置
CN116737037A (zh) * 2022-09-29 2023-09-12 荣耀终端有限公司 界面显示中的栈管理方法及相关装置
CN116302291B (zh) * 2023-05-11 2023-10-20 荣耀终端有限公司 应用显示方法、电子设备以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103559035A (zh) * 2013-10-31 2014-02-05 青岛海信移动通信技术股份有限公司 一种应用于Android平台的处理事件的方法和装置
CN104123498A (zh) * 2014-07-18 2014-10-29 广州金山网络科技有限公司 一种安卓系统Activity的安全性确定方法及装置
CN104375888A (zh) * 2014-08-28 2015-02-25 中科创达软件股份有限公司 基于Android系统的由通知栏调用后台任务的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103559035A (zh) * 2013-10-31 2014-02-05 青岛海信移动通信技术股份有限公司 一种应用于Android平台的处理事件的方法和装置
CN104123498A (zh) * 2014-07-18 2014-10-29 广州金山网络科技有限公司 一种安卓系统Activity的安全性确定方法及装置
CN104375888A (zh) * 2014-08-28 2015-02-25 中科创达软件股份有限公司 基于Android系统的由通知栏调用后台任务的方法

Also Published As

Publication number Publication date
CN106778248A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
CN106778248B (zh) 应用程序Activity启动的方法和装置
CN102630320B (zh) 信息处理装置以及应用程序不正当协作防止方法
KR101663072B1 (ko) 비휘발성 메모리 장치를 이용한 대안적인 부트 경로 지원
CN106776067B (zh) 多容器系统中系统资源的管理方法及管理装置
US8701195B2 (en) Method for antivirus in a mobile device by using a mobile storage and a system thereof
WO2014071867A1 (zh) 程序处理方法和系统,用于程序处理的客户端和服务器
JP6201049B2 (ja) 読み出し専用のシステムイメージ内のシステムレベルサービスを更新するためのシステム及び方法
EP2680138B1 (en) Dynamic rule management for kernel mode filter drivers
CN108733797B (zh) 文件处理方法及相关装置
JP2009527825A (ja) アプリケーション自動無能化/復元強化のためのシステム及び方法
US10516690B2 (en) Physical device detection for a mobile application
US20140065958A1 (en) Method, apparatus and system of recovering an operating system on a portable communication device
Yu et al. Remotely wiping sensitive data on stolen smartphones
CN108984339B (zh) 数据恢复方法及相关产品
CN103164653A (zh) 用于在数据分析系统中分析恶意软件的设备和方法
CN106776908A (zh) 数据清理方法、装置及终端
CN109639827B (zh) 客户端升级方法及装置
KR101575021B1 (ko) 무결성 검증을 수행하는 이동 단말기 및 그 제어방법
CN108762983B (zh) 多媒体数据恢复方法及装置
CN102280134A (zh) 一种用于提高移动存储设备中数据安全的方法
CN108804258B (zh) 数据恢复方法、装置、移动终端和存储介质
KR101297527B1 (ko) 회로 카드 데이터 보호
CN108763357B (zh) 文件处理方法及相关装置
CN105791221B (zh) 规则下发方法及装置
CN107872786B (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
TR01 Transfer of patent right

Effective date of registration: 20220321

Address after: 100020 1773, 15 / F, 17 / F, building 3, No.10, Jiuxianqiao Road, Chaoyang District, Beijing

Patentee after: Sanliu0 Digital Security Technology Group Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right