当前位置:首页 » 安卓系统 » android启动模式设置

android启动模式设置

发布时间: 2022-10-04 14:13:08

⑴ Android系统的几种启动模式

1.一般启动模式(normal mode) 进入方法:按电源键启动 描述:这是正常启动手机的方法 2.安全模式(safe mode) 进入方法:按住menu键,按电源键启动手机,直至手机启动完成松开menu键 描述:和正常启动一样,但没有登记Google,所以不能访问Market或使用你的Google账号 3.引导模式(bootloader mode) 进入方法:按住照相键,按电源键启动手机 描述:可以从SD卡上安装新的系统映像(DREAIMG.NBH),只需再按一次电源键。为获取root权限,对手机进行降级,就是使用这个模式。 4.恢复模式(recovery mode) 进入方法:按住HOME键,按电源键启动手机 描述:可以打开命令解释程序(shell),刷新映像文件(flash image),执行备份等。当然这一切取决于你手机上的recovery image版本。 5.诊断模式(diagnostic mode) 进入方法:按住轨迹球,按电源键启动手机 描述:用于测试(按音量键选择项目) 6.fastboot模式 进入方法:按住返回键,按电源键启动手机,直至屏幕出现FASTBOOT字样后松开返回键

⑵ Android开发,activity的默认启动模式为标准启动模式,什么时候会用到其他的启动模式

启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置;
启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;
讲解启动模式之前,有必要先了解一下“任务栈”的概念;
一 :
standard 模式:这个就没有什么好说的了,Android默认Activity启动的模式 就是 standard,如果有3个 Activity,Act1,Act2,Act3, 如果从Act1 启动到Act2 ,在启动到Act3,那么Android 的任务栈(task stack)分别为 Act1、Act2、Act3,Act3 在栈顶,如果此时按手机返回键,则需要返回3次才能返回到桌面(假设是从桌面启动的demo),任务栈分销毁掉 Act3,Act2,最后Act1 。
二 :singleTop模式:
实验效果:
singleTop模式:该启动模式和standard模式相差不多,任务栈分配也很相似,如:现有 act1,act 2,在act2 清单文件中配置 android:launchMode="singleTop" ,其他都是默认standard 模式, 若从桌面启动该实验demo,从act 1,到act2 ,那么任务栈则分配为,act1,act2,此时该任务栈和 standard 模式任务栈分配则完全相同,接下来则说明不同的地方,如果在act2 界面中 启动 到act1, 此时的 任务栈 情况则为 act1,act2,act1,在由act1 启动到act2,在启动到act2,进行多次启动,(在act2界面)任务栈的情况则为,act1,act2,act1,act2,栈顶的act2 则不会重新创建,则会复用act2 该 Activit, 依次类推。
理论知识:
singleTop,如果任务栈的栈顶元素是要被激活的组件,不会创建新的Activity放在任务栈,而是会复用栈顶的Activity。 如果发现栈顶的元素不是要激活的Activity,就会创建新的Activity 放置到任务栈里面
singleTop模式应用场景 :
App程序中(或浏览器中)保存的书签,假如用户看到一个界面保存自己喜欢的标签,假如要保存10个,这个时候用户在返回键的时候,则会返回10次才能返回到App应用中, Android下singleTop 则解决该问题。
三singleTask 模式 :
实验效果 相差不大,实验内容就不多说了,自己可以写个小demo,两个Activity,每个Activiy 有两个button,可以相互启动 打日志去动手查看,会理解更加深刻,可以参照着 SingleTop模式去实验,以下只是讲解下 和SingleTop的区别:
区别如下:(理论知识)
SingleTask 操作模式,一般和singleTop操作模式类似,如果他发现任务栈里面已经有了要启动的这个Activity,他会清空这个Activity所在的任务栈上面的所有Activiy,然后直接复用这个已经存在的Activity 。
应用场景:
如果一个App中,有一个功能需要加载网页内容 ,打开一个 browserActiviy现在网页内容,则内存开销非常大,首先要初始化webkit /c++ 嵌入式浏览器内核broweractivity 配置了singleTask,空间换时间,使用该模式可以节省内存开销。
四 :singleinstance 模式 :
直接理论知识吧”:
singleInstance操作模式会新开启一个任务栈,跟其他普通Activity不是 同一个任务栈,比较牛,他的模式流程是 首先要新开启一个新的任务栈把要激活的Activity放置到新的 任务栈里,这个任务栈里面只有且 只有一个实例,也比较极端吧。说比较极端也跟他的应用场景有关系。
应用场景 :
App各种词典,向有道词典,什么金山词典,说极端是因为不想被放置到同一个任务栈里面,它是全局的系统程序应用,达到节省内存的使用目的。

⑶ Android安卓系统手机几种运行模式解析

Android系统中具备6个模式,分别为一般启动模式(normal mode)、安全模式(safe mode)、恢复模式(recovery mode)、引导模式(bootloader mode)、fastboot模式和诊断模式(diagnostic mode)。 一般启动模式(normal mode)的功能是正常启动手机,方法为关机状态下按电源键启动。 安全模式(safe mode)。此模式和正常启动一样,但没有登记Google,所以不能访问Market或使用你的Google账号。操作方法为按住“menu”键,按电源键启动手机,直至手机启动完成松开“menu”键。 恢复模式(recovery mode)可打开命令解释程序(shell),刷新映像文件(flash image),执行备份等。当然这一切取决于你手机上的recovery image版本。使用方法很简单,就是home键和电源键一起按。 引导模式(bootloader mode)的功能是从SD卡上安装新的系统映像(DREAIMG.NBH),只需再按一次电源键。值得一提的事为Android手机获取root权限,就是使用这个模式。操作方法为照相键和电源键一起按。 fastboot模式主要是在电脑上使用fastboot命令来刷新映像文件。使用方法为按住返回键,按电源键启动手机,直至屏幕出现FASTBOOT字样后松开返回键。

⑷ 安卓采用什么方式来管理activity的实例

Android采用任务线(Task)的方式来管理Activity的实例。


在开发Android应用时,经常会涉及一些消耗大量系统内存的情况,例如视频播放、大量图片或者程序中开启多个Activity没有及时关闭等,会导致程序出现错误。为了避免这种问题,Google提供了一套完整的机制让开发人员控制 Android中的任务线。

Android系统中的任务线,类似于一个容器,用于管理所有的Activity实例。在存放Activity时,满足“先进后出 (First-In/Last-Out )"的原则。

但是使用任务线有以下缺点:

每开启一次页面都会在任务栈中添加一个Activity,而只有任务栈中的Activity全部清除出线时,任务线被销毁,程序才会退出。这样就造成了用户体验差, 需要点击多次返回才可以把程序退出。

每开启一次页面都会在任务栈中添加一个Activity还会造成数据冗余, 重复数据太多, 会导致内存溢出的问题(OOM)。为了解决任务栈产生的问题,Android为Activity设计了启动模式。

在实际开发中,应根据特定的需求为每个Activity指定恰当的启动模式。Activity的启动模式有4种,分别是standard、singleTop、singleTask和singlelnstance。在AndroidManifest.xml中,通过<activity>标签的android:launchMode属性可以设置启动模式。

⑸ android 怎么设置activity的启动模式

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。
Android总Activity的启动模式分为四种:

Activity启动模式设置:

<activity android:name=".MainActivity" android:launchMode="standard" />

Activity的四种启动模式:

1. standard

模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。

2. singleTop

如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。

3. singleTask

如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。

4. singleInstance

在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。

其中standard是系统默认的启动模式。

下面通过实例来演示standard的运行机制:

1 private TextView text_show;
2 private Button btn_mode;
3
4 @Override
5 public void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.activity_main);
8
9 text_show = (TextView) this.findViewById(R.id.text_show);
10
11 text_show.setText(this.toString());
12
13 btn_mode = (Button) this.findViewById(R.id.btn_mode);
14
15 }
16
//按钮单击事件
17 public void LaunchStandard(View v){
18 startActivity(new Intent(this,MainActivity.class));
19
20 text_show.setText(this.toString());
21 }

⑹ Android N“直接启动”是什么神奇的功能

从 Android N 开始,在首次开机时,在用户尚未来得及解锁设备之前,设备可直接启动到一种名为 Direct Boot(直接启动)的新模式中。在此模式下,操作系统可以全功能运行,但不允许访问私有应用数据,只能运行经过更新、可支持直接启动功能的应用。

直接启动适合我的应用吗?并非所有应用都应运行在直接启动模式下,因此,在开始编码之前,请务必先检查您的应用是否符合以下常见的用例:
安排闹铃的应用,如闹钟。

提供重要且及时的通知的应用,如短信应用。

为其他应用或系统提供服务的应用,例如辅助工具服务。

请注意,以上并非详尽的用例列表,我们期待看到还有哪些类型的应用能够从直接启动模式获益。

让您的应用支持直接启动
为了让您的应用能够在用户解锁设备之前运行,您必须在清单文件中将组件显式标记为支持直接启动:

<activity|provider|receiver|service ...

android:directBootAware=”true”>

您可以选择您的应用中需要支持直接启动的组件子集,但如果您使用的是自定义 Application 类,则假定应用内部标记为支持直接启动的任何组件均支持直接启动。对于需要在直接启动模式下在系统启动之后尽快运行的应用,现在提供一种新的 Intent.ACTION_LOCKED_BOOT_COMPLETED 广播。在用户解锁该设备之后,所有应用仍将收到 Intent.ACTION_BOOT_COMPLETED 广播。

使用设备保护存储区为了支持应用在用户提供解锁私有应用数据所需的凭据之前的正常运行,所有 Android N 设备现在均提供两个数据存储位置:
凭据保护存储区,这是所有应用的默认存储位置,仅在用户解锁设备后可用。

设备保护存储区,这是一个新的存储位置,当设备启动后(包括直接启动期间)随时都可访问该位置。

应用中被标记为支持直接启动的组件必须使用设备保护存储区来存储直接启动模式期间应用操作所需的任何数据。在用户解锁设备后,用户仍可访问凭据保护存储区。

要访问设备保护存储区,您需要为所有文件相关的 API 另外创建并使用一个 Context 对象:

Context deviceProtectedContext = context.();

deviceProtectedContext.openFileInput( ... )

当您的应用更新到支持直接启动的版本之后,您之前保存的共享首选项
数据库可能需要迁移到设备保护存储区。在访问该存储区之前,即使数据已从旧版本或其他设备中备份并恢复,您仍应使
用 Context.moveSharedPreferencesFrom() 和
Context.moveDatabaseFrom(),以确保应用能够继续正常运行。

注意事项

应审慎考虑要在设备保护存储区中存储哪些数据。应尽量减少在设备保护存储区中存储的数据,以确保您的应用在直接启动期间正常运行为限。例如,在短信应用
中,您可以存储一个访问令牌,其作用域仅限于能够访问服务器上的新消息数量。所有敏感的私人信息(例如完整的短信历史记录和读/写访问令牌)仍应保存在凭
据保护存储区中。

另外需要提醒的一点是:在直接启动期间,应用只能访问其他支持直接
启动的应用和组件。如果您的应用依赖外部服务和 Activity,请确保妥善处理外部服务和 Activity
不可用的情形。默认情况下,Intent 过滤器仅匹配当前用户状态(已锁定/已解锁)下可用的组件。现在有两个新的标志,可用于向 Package
Manager
显式声明需要枚举哪些组
件:PackageManager.MATCH_DIRECT_BOOT_AWARE 和 PackageManager.MATCH_DIRECT_BOOT_UNAWARE。

未来计划

原生支持直接启动的 Android N 设备发布之前,您可以使用 Android N 开发者预览版测试您的应用。在 Nexus 5X 和
Nexus 6P 上,您可以通过使用 Settings > Developer options > Convert to file
encryption 来擦除所有用户数据并启用完整的直接启动模式。或者,您也可以重新启动到引导装载程序并发出相应的快速启动命令:

$ adb reboot-bootloader

$ fastboot --wipe-and-use-fbe

警告:这两种方法都将执行恢复出厂设置并删除设备中的所有用户数据。

或者,您也可以使用模拟的直接启动模式。若要启用模拟直接启动模式,请在设备上设置锁定模式,如果在设置锁定模式时系统提示安全启动屏幕,则选择“No thanks”,然后使用以下 adb shell 命令启用和禁用模拟:

$ adb shell sm set-emulate-fbe true

$ adb shell sm set-emulate-fbe false

请注意,使用这些命令会导致设备重启。您只应在测试设备上使用模拟直接启动模式,因为该模式可能导致数据丢失。

热点内容
华为honor6a如何重置密码 发布:2025-01-21 05:37:30 浏览:987
黑客编程意思 发布:2025-01-21 05:34:34 浏览:18
数据库服务器远程 发布:2025-01-21 05:34:34 浏览:700
ftp断点续传工具 发布:2025-01-21 05:13:42 浏览:990
哈弗h9买哪个配置划算 发布:2025-01-21 05:01:19 浏览:641
微信视频如何重新缓存 发布:2025-01-21 04:44:41 浏览:880
pdf压缩文件大小 发布:2025-01-21 04:40:24 浏览:799
linux解压文件到指定 发布:2025-01-21 04:38:36 浏览:875
自己做的安卓app怎么下载 发布:2025-01-21 04:35:07 浏览:164
机顶盒加密频道 发布:2025-01-21 04:26:48 浏览:318