`
enuoCM
  • 浏览: 21472 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Disable Runtime permision后恢复Activity

阅读更多
设备M或者M以上,当用户手动在系统设置中disable掉应用任何runtime permission时,运行的应用process会被kill掉,重回前台的时候,系统会恢复应用的task。但是这里需要注意Activity恢复的相关处理:
1. 如果你的页面是通过onSaveInstanceState和onRestoreInstanceState记录状态并恢复的。那么恭喜你,你不需要做额外的工作。
2. 如果你是基于onRetainNonConfigurationInstance和getLastNonConfigurationInstance的,那么你有事了。重新恢复时getLastNonConfigurationInstance始终为null。Crash会让你想办法处理。
3. 如果你是基于Retained Fragment记录状态并恢复的,那么你哭吧。重新恢复时,你的Retained Fragment不会为null,但是它却是个全新的Retained Fragment,数据都是初始默认值。这种情况更容易造成潜在的bug。

所以,最好使用onSaveInstanceState,考虑使用Parcelable或者Serializable记录复杂的对象。 如果onSaveInstanceState有实在不能记录的内容或者记录代价很大的情况,根据业务逻辑,考虑恢复成初始状态吧。 对Retained Fragment的情形得小心了,你得考虑到它可能是个dummy的对象,需要额外的逻辑处理这种情况。
那怎么能够确定碰上了这种情况呢? 始终实现onRetainNonConfigurationInstance,return一个非null的对象,然后在recreate的时候检查savedInstanceState != null && getLastNonConfigurationInstance == null

分享到:
评论

相关推荐

    adb,支持adb disable-verity命令,解锁system分区

    3. 临时禁用verity:在恢复模式下,使用`adb shell`进入设备的shell,然后执行`disable-verity`命令。这会暂时关闭verity检查,允许你在下次启动时修改system分区。 4. 永久禁用verity:如果需要在每次启动时都禁用...

    Android代码-屏蔽home按键

    Utility to disable HOME KEY in Android Activity. As there are a lot questions about "how to disable home button in android?" on Stack Overflow, such as how to disable home button in android? Android ...

    针对宝塔的RASP及其disable_functions的绕过1

    RASP(Runtime Application Self-Protection)是一种 Runtime 应用程序自我保护技术,旨在保护应用程序免受攻击和恶意活动的影响。在宝塔平台上,RASP 技术可以拦截基于 www 权限的命令执行,包括 PHP 调用 system ...

    (免费)提供 adb -disable-verity 支持

    此adb工具包中包含了adb disable-verity命令,这里免费提供给大家使用,具体可看本人的文章 ”/system/bin/sh: disable-verity: not found 的解决方案“ 【使用方式】 platform-tools解压后即可使用。在cmd中通过cd...

    华为以太网交换机vlan disable的功能和配置.doc

    启用VLAN Disable后,S3026将不再处理VLAN信息,从而可以透传所有的数据包,无论其是否带有VLAN标签。 3. **VLAN Disable的配置**: 配置VLAN Disable相当简单,只需要在全局配置模式下执行一条命令即可: ``` ...

    无 adb disable-verity 命令的adb应用程序

    此adb中无adb disable-verity命令,如果在cmd中输入以上命令会报 /system/bin/sh: disable-verity: not found 的错误。具体可看本人的文章 ”/system/bin/sh: disable-verity: not found 的解决方案“ 【使用方式】...

    Activity最小化终极解决方案

    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> ``` 然后在特定的Activity中,我们可以重写`onAttachedToWindow()`方法,设置Activity的窗口类型为`TYPE_KEYGUARD`,以禁止Home键的默认...

    蚁剑的能绕过disable_functions的插件

    蚁剑的能绕过disable_functions的插件,插件无法下载问题

    交换机出现err-disable的原因及解决方法

    那么A会给B发送一个包含自己port id的UDLD帧,但是B收到后并不知道这个帧是什么,也就不会返回一个包含A的port id的UDLD帧,这时候A就会认为这条链路是一个单向链路,自然也就变成了err-disable状态了。 原因五:...

    ulps_enable_disable.zip

    标题 "ulps_enable_disable.zip" 暗示了这是一个与启用或禁用ULPS相关的软件配置包。ULPS,全称Ultra Low Power State(超低功耗状态),是计算机硬件,特别是显卡中的一种节能技术。它允许设备在不活动时进入一种极...

    onnxruntime-1.5.3-cp38-cp38-linux_armv7l.whl.zip

    在安装完成后,你就可以在Python环境中导入`onnxruntime`模块,开始使用ONNX运行时进行模型推理。例如,加载一个ONNX模型并进行预测: ```python import onnxruntime # 加载ONNX模型 ort_session = onnxruntime....

    adb-disable-verity

    "adb-disable-verity"是一个与Android设备管理相关的主题,它涉及到ADB(Android Debug Bridge)工具的使用,特别是针对系统验证功能“verity”的禁用过程。在Android系统中,verity是一种安全特性,用于确保系统...

    交换机端口假死(err-disable)解决方法[归类].pdf

    1. `err-disable recovery cause all`:启用所有原因的恢复定时器,这意味着交换机会在预设的时间间隔后尝试恢复所有类型的err-disable状态。 2. `err-disable recovery cause bpduguard`:针对BPDU Guard错误启用...

    adb带disable-verity.zip

    然而,在某些情况下,如刷机、调试或者恢复出厂设置后,可能需要临时或永久禁用此功能,以便能够修改系统分区。 这个压缩包提供的bat脚本应该是为了简化这个过程。通常,禁用verity需要root权限,并且涉及修改系统...

    enable disable home

    enable and disable "HOME" button in android 4.0.3 above the version 4.0.3,we should modify the frameworks detail is described in the Enable_Disable_Home.rar

    Simple.Disable.Key.rar

    《Simple.Disable.Key:探索键盘热键自定义的奥秘》 在当今信息化社会,键盘作为计算机的主要输入设备,其快捷键的运用极大地提升了工作效率。然而,有些键盘热键可能会与用户的需求或软件冲突,导致不便。这时,一...

    google字体插件-disable-google-fonts

    WordPress的插件:google字体插件-disable-google-fonts 解压后,请将目录名称:wordpress1,修改为:disable-google-fonts

    disable-google-mapsV2.0.zip

    1. 首先,下载"disable-google-mapsV2.0.zip"压缩包,解压后得到"disable-google-maps"文件夹。 2. 登录你的WordPress管理后台,进入"插件"页面。 3. 点击"上传插件",选择解压后的"disable-google-maps.zip"文件...

    Odoo Select Field disable

    该模块用于在Odoo环境中,指定Selection字段可选择的值。

Global site tag (gtag.js) - Google Analytics