android:allowTaskReparenting
用法<application android:allowTaskReparenting="true/false"></application>
是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务。用来标记Activity能否从启动的Task移动到有着affinity的Task(当这个Task进入到前台时)—— “true”,表示能移动,“false”,表示它必须呆在启动时呆在的那个Task里。
如果这个特性没有被设定,设定到<application>元素上的allowTaskReparenting特性的值会应用到Activity上。默认值为“false”。
一般来说,当Activity启动后,它就与启动它的Task关联,并且在那里耗尽它的整个生命周期。当当前的Task不再显示时,你可以使用这个特性来 强制Activity移动到有着affinity的Task中。典型用法是:把一个应用程序的Activity移到另一个应用程序的主Task中。
例如,如果e-mail中包含一个web页的链接,点击它就会启动一个Activity来显示这个页面。这个Activity是由Browser应用程序 定义的,但是,现在它作为e-mail Task的一部分。如果它重新宿主到Browser Task里,当Browser下一次进入到前台时,它就能被看见,并且,当e-mail
Task再次进入前台时,就看不到它了。
Actvity的affinity是由taskAffinity特性定义的。Task的affinity是通过读取根Activity的affinity 决定。因此,根据定义,根Activity总是位于相同affinity的Task里。由于启动模式为“singleTask”和 “singleInstance”的Activity只能位于Task的底部,因此,重新宿主只能限于“standard”和“singleTop”模
式。
android:alwaysRetainTaskState
用法<activity android:alwaysRetainTaskState="true/false"></activity>
用来标记Activity所在的Task的状态是否总是由系统来保持——“true”,表示总是;“false”,表示在某种情形下允许系统恢复Task 到它的初始化状态。默认值是“false”。这个特性只针对Task的根Activity有意义;对其它Activity来说,忽略之。
一般来说,特定的情形如当用户从主画面重新选择这个Task时,系统会对这个Task进行清理(从stack中删除位于根Activity之上的所有Activivity)。典型的情况,当用户有一段时间没有访问这个Task时也会这么做,例如30分钟。
然而,当这个特性设为“true”时,用户总是能回到这个Task的最新状态,无论他们是如何启动的。这非常有用,例如,像Browser应用程序,这里有很多的状态(例如多个打开的Tab),用户不想丢失这些状态。
android:clearTaskOnLanunch
用法<activity android:clearTaskOnLanunch=”true/false”></activity>
用来标记是否从Task中清除所有的Activity,除了根Activity外(每当从主画面重新启动时)——“true”,表示总是清除至它的 根 Activity,“false”表示不。默认值是“false”。这个特性只对启动一个新的Task的Activity(根Activity)有意义; 对Task中其它的Activity忽略。
当这个值为“true”,每次用户重新启动这个Task时,都会进入到它的根Activity中,不管这个Task最后在做些什么,也不管用户是使 用 BACK还是HOME离开的。当这个值为“false”时,可能会在一些情形下(参考alwaysRetainTaskState特性)清除Task的 Activity,但不总是。
假设,某人从主画面启动了Activity P,并从那里迁移至Activity Q。接下来用户按下HOME,然后返回Activity P。一般,用户可能见到的是Activity Q,因为它是P的Task中最后工作的内容。然而,如果P设定这个特性为“true”,当用户按下HOME并使这个Task再次进入前台时,其上的所有的
Activity(在这里是Q)都将被清除。因此,当返回到这个Task时,用户只能看到P。
如果这个特性和allowTaskReparenting都设定为“true”,那些能重新宿主的Activity会移动到共享affinity的Task中;剩下的Activity都将被抛弃,如上所述。
android:configChanges
当配置list发生修改时, 是否调用 onConfigurationChanged() 方法 比如 "locale|navigation|orientation".
举例:在按下power键时,直接在应用程序里onPause处理就好。当app是竖屏时,这样处理没问题。但是当app是横屏时,按下power 键,app会强制回到竖屏,并且会重新调用activity的onCreate。很多时候这不是预期结果,所以就会用到 android:configChanges。
在配置文件里设置android:configChanges=”keyboardHidden|orientation”,这样在屏幕方向改变的时候就 不会重新调用activity的onCreate()方法,而是调用onConfigurationChanged(),然后在activity里面重在 下。
android:enabled
activity 是否可以被实例化
用法:<activity android:enabled="true"></activity>
android:excludeFromRecents
是否可被显示在最近打开的activity列表里
用法:<activity android:excludeFromRecents="true"></activity>
android:exported
是否允许activity被其它程序调用
android:finishOnTaskLaunch
用来标记当用户再次启动它的Task(在主画面选择这个Task)时已经存在的Activity实例是否要关闭(结束)——“true”,表示应该关闭,“false”表示不关闭。默认值是“false”。
如果这个特性和allowTaskReparenting都设定为“true”,这个特性胜出。Activity的affinity忽略。这个 Activity不会重新宿主,但是会销毁。
android.icon
用法:<application android:icon="@drawable/xx_icon"></application>,加在应用程序图标
android:label
定义了每个title栏的名称,但是优先级低于activity中的setTitle()
相关文章
- 07-17音视频入门基础:H.264专题(12)——FFmpeg源码中通过SPS属性计算视频分辨率的实现
- 07-17Android约束布局的概念与属性(2)-4.辅助线
- 07-17使用附加属性 实现wpf中的passwordBox 的明文/密文密码切换
- 07-17Android 复习string.xml中的替换符
- 07-17嵌入式物联网实战开发笔记-乐鑫ESP32开发环境ESP-IDF搭建【doc.yotill.com】- 图 3.2.1.1 ESP32-IDF 安装包(部分截图) 上图中 ESP32-IDF v5.1.2 - Offine Installer,5.1.2 是当前最新版本,如果没有 ESP32-IDF v5.1.2 - Offine Installer,说明官方有更新最新版本。我们建议使用离线 ESP32-IDF 安装包,因为使用在线 ESP32-IDF 安装包搭建环境需要网络的支持,所以我们不能保证网络下载过程中丢失某些文件,从而导致搭建环境失败。 下载成功后,在安装程序上单击右键选择<以管理员身份运行>运行 esp-idf-tools-setup- 图 3.2.1.2 以管理员身份运行 IDF 安装文件打开安装程序后选择简体中文安装,如下图所示: 图 3.2.1.3 选择简体中文 往下走就是许可协议,勾选“我同意此协议”,单击下一步,如下图所示: 图 3.2.1.4 勾选“我同意此协议” 如果是第一次安装,会出现如下图提示。 安装程序会检查你当前系统有没有打开"长路径支持",因为 GNU 编译器产生的编译文件会有非常深的目录结构,如果不支持长路径,编译可能出现文件不存在,目录不存在等奇怪的错误。这里单击应用修复按钮,可以修复这个问题。 在弹出的确认对话框中,选择是,开始修复。 图 3.2.1.6 在注册表中启用长路径如果修复不成功,一般情况是安装软件打开时没有使用管理员权限打开,可以手动修改注册表来支持长路径:打开注册表 HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPat hsEnabled 设置为 1。如下图所示: 修复完成之后,点击下一步。 接下来一步,开始选择安装目录,安装程序默认的安装位置为 C:\Espressif,但这里我是安装在 D 盘,如果全部源码编译后可能产生几十 G 的大小占用,我们在 D 盘下创建 ESP32\Espre ssif 文件夹来保存 ESP32-IDF 库安装过程中生成的文件,如下图所示: 图 3.2.1.8 设置安装路径 这个安装路径非常重要,因为 VS Code 软件的 IDF 插件需要此路径来获取相关文件,所以开发者务必牢记该路径。 下一步,确认安装组件,这里全部打勾,默认完全安装时 ESP32C2 是不打勾的(如下图所示),看需要自己选择。然后单击下一步。 图 3.2.1.9 选择安装组件我们选择全部安装。点击下一步再次确认安装目录信息,然后单击安装。安装完成,三个全部勾选,2 用于测试环境安装是否成功,3 是将 IDF 工具链加入杀毒工具排除项,以加快编译速度,如下图所示: 3.2.2 验证 ESP-IDF 库 ESP-IDF 安装完成之后,系统自动打开两个窗口,它们分别为 PowerShell 命令行和传统的 cmd 命令行窗口,分别如下图所示: 从上图中可以看到,当出现红色方框内的内容时,可以初步证明安装是没有问题的,同时这两个窗口都提示“idf.py build”字符串,它是 ESP32-IDF 库提供的编译代码命令。到此,我们如何验证 ESP32-IDF 库安装是否成功呢?这里我们使用 ESP32-IDF 库提供的实例来验证安装是否成功。首先我们打开 D:\ESP32\Espressif\frameworks\esp-idf-v5.1.2\examples\get-started 路径,在此路径下包含三个 ESP32-S3 例程,如下图所示: 这里我们使用第二个例程(hello_world)来验证 ESP32-IDF 库是否安装成功,首先拷贝这里例程的路径,然后在 PowerShell 或 cmd 命令行窗口输入命令“cd D:\ESP32\Espressif\framew orks\esp-idf-v5.1.2\examples\get-started\hello_world”,最后按回车进入此例程,如下图①所示: 此时在此窗口输入命令“idf.py build”(上图②)编译此工程,编译结果如下所示: 窗口提示命令“idf.py -p (port) flash”,证明 ESP32-IDF 库安装完成。开发者也可以使用其他命令来验证,如命令(idf.py Menuconfig 进入菜单配置、idf.py set-target xxx 选择芯片或者是 idf.py monitor 开启监控等)。 3.2.3 添加 ESP32-IDF 的环境变量 按照此过程(此电脑→属性→高级系统→环境变量)打开,如下图所示: 图 3.2.3.1 添加环境变量 如果 ESP32-IDF 库安装成功,则系统自动为我们添加上图中的 IDF_TOOLS_PATH 和 IDF_PATH 环境变量,否则手动添加这两个环境变量。 3.3 搭建开发环境 3.3.1 下载与安装 VSCode 鉴于我们使用的是 VSCode IDE 搭配官方 IDF 的方式进行开发,我们接下来便介绍一下 VSCode 的安装过程。 首先,进入 VSCode 官方下载页面,根据系统需求选择下载安装包下图是 VSCode 图 3.3.1.1 VSCode 官网下载界面 这里,我们选择 Windows 版本进行下载。因为,我们是在 Windows 环境下进行的开发,故在此介绍 Windows 版本的下载步骤。不出意外,其它版本的下载方式应该也是一样的。这里我们不多废话,直接点击下载。 下载完后,我们按照如下所示步骤进行即可: 在该步骤中,路径如需更改的,请您点击“浏览”进行更改,但请注意:修改的路径最好不要出现中文,以避免在往后的开发过程中遇到问题而导致重装软件,这对您来说就得不偿失了。 如需修改,同样点击“浏览”进行设置,无需修改的话直接点击“下一步”即可。 这一步骤同样是有需求的都勾上,我们建议是都勾上。 详细的个性化设置我们便不多介绍了,在这里我们介绍如何设置中文界面。 我们在上图 3.4.8 中找到最左边一栏的“扩展”在搜索框中输入“Chinese”即可出现红色框内的扩展应用,然后我们点击安装并重启软件即可。 至此,VSCode 的安装与配置便算是大功告成了。感谢您能耐心看到此处。
- 07-17如何用Selenium通过Xpath,精准定位到“多个相同属性值以及多个相同元素”中的目标属性值-前言
- 07-17【Android】源码中的工厂方法模式
- 07-17vue如何将对象中属性值为“”,null,undefined的属性去掉,组成一个新对象
- 07-17BGP-(as-path-filter)-as-path-filter,正则表达式,as-path过滤器,对于BGP的as-path属性实际上可以看成是一个包含空格的字符串。 特点:通过对BGP路由的as-path属性进行匹配达到对BGP路由的过滤。 在route-policy中可以被if-match语句调用,用于对匹配的路由做策略。 按照配置顺序进行匹配,如果有路由匹配一个as-path-filter将不再向下继续匹配。 默认拒绝所有。 当策略产生冲突,拒绝优先。 根据as-path筛选路由:元字符+数值,两部分组成。.*——代表匹配所有。.号;*号;+号;?号;$号等等。 ^100,匹配所有邻居AS的路由;100$,匹配所有AS100内始发的路由。 [AR1]display bgp routing-table regular-expression 3+ BGP缺省路由
- 07-17uniapp view组件中的 -webkit-box-orient 属性