android 处理配置变更的实现方法

目录
  • 1.配置变更
  • 2.处理配置变更之:在配置变更期间保留对象
  • 3.处理配置变更之:自行处理配置变更

1.配置变更

某些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性,以及当用户启用多窗口模式时)。发生这种变化时,Android 会重启正在运行的 Activity(先后调用 onDestroy() 和 onCreate())

这种问题如果不处理会导致本来已经捆绑到控件上的数据发生丢失,以下便是如何处理这种问题的两种解决方法(第一个是保存数据,第二个是通过配置使数据不丢失)

2.处理配置变更之:在配置变更期间保留对象

可以使用viewmodel实现

3.处理配置变更之:自行处理配置变更

3.1通过配置阻止activity重启

可通过配置activity标准中的configChanges属性来声明 Activity 自行处理配置变更,从而阻止系统重启 Activity,该属性的值表示要处理的配置
如果要阻止屏幕转动需要配置"orientation" 和 “screenSize”

“keyboardHidden” 值可在键盘可用性发生变更时阻止重启

3.2 配置变更监听

如果配置发生改变后你需要做一些操作,可以从写onConfigurationChanged去监听改变如下是监听屏幕方向代码

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        }
    }

到此这篇关于android 处理配置变更的实现方法的文章就介绍到这了,更多相关android 配置变更内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android7.0行为变更之适配File Provider的方法

    两个小解释: FileProvider是ContentProvider特殊的子类,ContentProvider通过创建content:// Uri来替代file:/// Uri. 在Android 7.0的以上的系统中,尝试传递file://URI可能会触发FileUriExposedException FileProvider的这个概述包括以下主题: 1.定义FileProvider 2.指定可用文件 3.检索文件的Content URI 4.授予URI的临时权限 5.将内容URI提供给其他

  • Android Studio 3.0 Gradle 配置变更

    多渠道打包变更 flavorDimensions "default" productFlavors { xxxx { dimension "default" } } productFlavors.all { flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name] } 更改打包命名及路径 android.applicationVariants.all { variant -> if (va

  • AndroidQ分区存储权限变更及适配的实现

    分区存储 在Android Q中引入了分区储存功能,在外部存储设备中为每个应用提供了一个"隔离存储沙盒".其他应用无法直接访问应用的沙盒文件.由于文件是应用的私有文件,不再需要任何权限即可访问和保存自己的文件.此变更并有助于减少应用所需的权限数量,同时保证用户文件的隐私性. 权限变更 Android Q 更改了应用对设备外部存储设备中的文件(如:/sdcard )的访问方式.继续使用 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限,只

  • Android 7.0行为变更 FileUriExposedException解决方法

    Android 7.0行为变更 FileUriExposedException解决方法 当我们开发关于[在应用间共享文件]相关功能的时候,在Android 7.0上经常会报出此运行时异常,那么Android 7.0以下没问题的代码,为什么跑到Android 7.0+的设备上运行就出问题了呢?,这主要来自于Android 7.0的一项[行为变更]! 对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI

  • android 处理配置变更的实现方法

    目录 1.配置变更 2.处理配置变更之:在配置变更期间保留对象 3.处理配置变更之:自行处理配置变更 1.配置变更 某些设备配置可能会在运行时发生变化(例如屏幕方向.键盘可用性,以及当用户启用多窗口模式时).发生这种变化时,Android 会重启正在运行的 Activity(先后调用 onDestroy() 和 onCreate()) 这种问题如果不处理会导致本来已经捆绑到控件上的数据发生丢失,以下便是如何处理这种问题的两种解决方法(第一个是保存数据,第二个是通过配置使数据不丢失) 2.处理配置

  • Android Studio 配置忽略文件的方法实现

    简介 当我们在进行上传代码到Git.SVN仓库时,通常需要先配置忽略文件,这样主要是方便上传的代码下载的时候不会与编译器和Gradle的版本发生冲突,能够保证下载的代码能正常运行. 操作步骤 打开Android Studio中的File下的Settings 选中Version Control下的Ignored Files 添加对应的需要忽略的文件 Ignore Unversioned Files下有三种忽略文件方式 Ignore specified file 忽略指定文件 Ignore all

  • Android Studio配置本地SDK的方法

    Android Studio配置本地SDK 问题一:Android Studio报错:SDK does not contain any platforms. 解决方法:本地SDK应放到名为platforms的外层文件夹内. 例子:D:\SDK\platforms- (选择路径时选取到SDK文件夹即可) 问题二:Android SDK location should not contain whitespace, as this can cause problems with the NDK to

  • Android sdutio配置Zxing进行扫码功能的实现方法

    github开源项目(Zxing)demo 最快的调用Zxing方法 1.关联第三方库 2.调用基础的扫码 3.获取返回值 具体代码如下: //1.默认选项启动意图 new IntentIntegrator(MainActivity.this).initiateScan(); // `this` is the current Activity //2.获取得到的结果: @Override protected void onActivityResult(int requestCode, int r

  • Android Studio配置内嵌JDK的方法

    今天发现JDK环境变量没有配置好. 我没有专门去下载java,在下载Android Studio时,会自带内嵌的JDK. 打开File-OtherSettings-DefaultProjectStructure,可看到AS已自动勾选Use embedded JDK,而且是官方推荐的做法. 以下是配置环境变量的操作. java 1.8以后就无需CLASSPATH环境变量了. 我们只需配置JAVA_HOME和PATH即可. JAVA_HOME C:\AndroidStudio\jre (JDK安装目

  • Android颜色配置器配置方法

    一.Android Color设置 1.在xml文件中 想设置颜色直接设置background的属性或者其他的color属性.随便设置一个颜色如#000,再点击左边的颜色方块,弹出颜色选择器选择颜色 2.在java代码中 ①Color.parseColor("#000"); tvShow.setBackgroundColor(Color.parseColor("#000")); [提示]可以在布局文件中配置好颜色值,然后把用"#"表示的颜色带到j

  • Flutter下Android Studio配置gradle的方法

    一.失败的经历:手动配置gradle 下载gradle包http://gradle.org/gradle-download/ Mac Finder->Applications/应用程序->Android Studio右键显示包内容.继续打开Contents文件夹,正常情况下会有一个gradle文件夹,将下载解压之后的文件复制到这个文件夹下.如果Contents文件夹下没有gradle文件夹,创建gradle文件夹,继续后面的操作 配置gradle环境路径 打开终端,打开系统环境配置文件vim

  • Android使用元数据实现配置信息的传递方法详细介绍

    目录 前序 一.在代码中获取元数据 二.给应用页面注册快捷方式 前序 格式 <meta-data android:name="weather" android:value="xxx"/> 什么场景需要使用? 使用第三方SDK,需要在APP应用内使用别的APP的整合包,如使用微信登录.某某地图等. 一.在代码中获取元数据 在java代码中,获取元数据信息的步骤分为下列三步: 调用getPackageManager方法获得当前应用的包管理器: 调用包管理器的

随机推荐