首页
学习
活动
专区
圈层
工具
发布

在 Android 11 及更高版本系统中处理可空性

目前,在排名前 1,000 位的 Android 应用中,已有超过 60% 正在使用 Kotlin 进行开发。为什么 Kotlin 受到这么多开发者的喜爱呢?...本文将带您了解 Android 11 SDK 引入了哪些变更,以便在 API 中显示更多的可空性信息。此外,我们还将介绍一些实用方法与技巧,帮助您做好准备,顺利应对 Kotlin 中的可空性问题。...更多详情: youtrack.jetbrains.com/issue/KT-36… Android 11 中的可空性 我们在近期发布了 Android 11 开发者预览版,邀请开发者们试用最新的 Android...我们将继续遵循以下原则为 Android SDK 添加注释: 先在较低版本 (例如 Android 10) 中采用 @RecentlyNullable 和 @RecentlyNonNull,然后再在新版本...此举的目的是为了给您预留至少一个版本发布周期的时间更新 Kotlin 代码,确保其质量更高、更加健壮。 Java 是 Oracle 和/或其附属公司的注册商标。

1.8K10

Android中的权限问题

在Android程序中,在执行形如访问网络、读取联系人时都要声明权限,在 Android 系统版本小于6.0时,所有的权限只需要在AndroidManifest文件中声明就可以使用对应的功能了。...但是在Android6.0版本以上,Android将权限分为了普通权限和危险权限,其中普通权限的使用和以前的Android版本一样,直接在AndroidManifest文件中声明就行了,系统会自动帮我们授权...那么哪些权限是危险权限呢,下面给出了Android所有的危险权限,那么除了下表中的危险权限,其它的权限就都是Android普通权限了: 我们可以通过权限组的方式大致记一下危险权限: 1、读写日历:android.permission.READ_CALENDAR...android.permission.WRITE_EXTERNAL_STORAGE 好了,以上就是Android的所有危险权限,我们在使用这些权限的时候不仅要在AndroidManifest文件中声明...,还需要在代码中对用户的授权情况进行处理,下面以一个简单的例子来看一下如何在代码中处理危险权限: 新建一个Android工程: activity_main.xml: <?

1.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android Studio 中的Gradle版本介绍

    前言 如果你针对Android Studio中的Gradle插件有不懂。打开老项目的时候,经常由于Gradle的版本号问题造成项目无法编译。...不了解Project目录下build.gradle中的com.android.tools.build:gradle版本与gradle/wrapper/gradle-wrapper.properties...这两个插件的版本一旦不匹配上,还容易造成更多的编译错误。 但是这两个插件的版本号却不同步。 针对这个问题,我今天好好介绍介绍。 希望能够让大家明白这两个插件的区别以及对应关系。...但是,AndroidGradle 是需要依赖于gradle的,所以两个之间的对应关系比较重要 版本对应 Android Gradle 插件版本 所需的 Gradle 版本 1.0.0 - 1.1.3 2.2.1...针对依赖库提高了lint性能检查 也就是我们在编译时针对我们依赖的其他库进行了更高的lint android { ...

    4.1K30

    Android中的FragmentManager的问题

    Fragment是构成灵活UI的重要部分。最近学习到Fragment的使用时候,碰到一个问题。主程序程序布局非常简单:   就是两个Fragment构成主要布局,然后在Java代码中获取Fragment: SlidingPaneLayout spl = (SlidingPaneLayout) this.findViewById...findFragmentById()应该不太可能出现空指针异常,布局文件中两个fragment明摆着。那么只能说是getFragmentManager()这个调用出现了指针。...在Fragment的开发文档中明确指出,Fragment的管理都是通过FragmentManager来实现的,那么问题出现在哪呢?在网上搜了一番终于发现了症结所在。...我们引用的是v4兼容包中的Fragment组件,而getFragmentManager()是针对v11+的Fragment的,因此将getFragmentManager()替换成getSupportFragmentManager

    1.1K50

    Android BaseQuickAdapter3.0.4版本二级列表的使用及遇到的问题

    ,使用的版本是2.9.4,在使用中发现当二级列表展开时对子列表数据进行操作后,列表中展开和闭合显示的数据会异常。...因为当时项目比较急,3.0版本的用法和原来完全不一样了,加上这个问题不大,所以就没再处理,现在抽出空来就想试试3.0版本的实现方式,毕竟作者说3.0使用kotlin重写了不少,并解决了一些2.0版本中的...实现效果 ‍上图中可以看出,在展开列表中做删除明细的操作后,数据显示的就异常了,这个是在2.X的版本中出现的问题,现在3.0里面还是有这个情况。...不过这个倒不是本篇的重点,实际用到的这个场景应该比较少,本篇主要是说一下3.0版本中多级列表的实现方式,另外这个Demo中也是初次尝试MutableSharedFlow的来替代LiveData,使用中有些还没理解明白...代码实现 微卡智享 在2.x版本中,使用多级列表用的BaseMultiItemQuickAdapter,定义的类要继承自MultiItemEntity,现在3.0版本中,我使用的是BaseNodeAdapter

    4K30

    Vue项目构建与启动中的版本依赖问题及解决方案

    Vue项目构建与启动中的版本依赖问题及解决方案 引言 在现代前端开发中,Vue.js 已经成为了一个非常流行的框架。然而,随着项目的复杂度增加,依赖管理问题也逐渐显现出来。...尤其是在构建和启动Vue项目时,版本依赖问题常常让开发者头疼不已。本文将详细探讨Vue项目构建和启动过程中可能遇到的版本依赖问题,并提供相应的解决方案。...npm run build 二、常见的版本依赖问题 在Vue项目的构建与启动过程中,常见的版本依赖问题主要包括以下几种: Node.js版本不兼容:Vue CLI和某些依赖包可能需要特定版本的Node.js...三、解决版本依赖问题的方案 1. Node.js版本管理 问题描述:Vue CLI和某些依赖包可能需要特定版本的Node.js。如果当前系统中的Node.js版本不兼容,可能会导致构建或启动失败。...版本依赖问题是一个常见且复杂的问题。

    21010

    升级Android支持库版本遇到的两个问题

    公司项目之前support Library 版本比较混乱,各moudle有好几个版本的v7包和v4包,而且版本还比较低,今天抽时间统一了下支持库以及buildToolsVersion等的版本,但是遇到了两个问题...升级buildToolsVersion至26 最新的buildToolsVersion已经到26了,照之前方式,直接在build文件中将buildToolsVersion后的引用版本改为26.0.2,然后同步...在主题设置隐藏ActionBar无效 最初我的appcompat-v7版本是20,所以activity继承的是ActionBarActivity,所以在style文件里是这样设置是有用的的: 的区别: 若添加在属性名称前添加 andoird: 时即指定属性为 android 包下。...所以错误地使用 android:windowActionBar 和 android:windowNoTitle,应该使用 windowActionBar 和 windowNoTitle

    82120

    策略模式及Android源码中的应用

    针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。 2. 需要安全地封装多种同一类型的操作时。 3....关注行为的选择 黑盒子(无需知道具体的实现过程) 白盒子(知道具体的实现过程) 源码中的策略模式实现 ListAdapter ListView 是一个很重要的组件,我们通常在布局里写个 ListView...组件,然后在代码中 setAdapter,把 View 与 Model 结合的任务交给了 Adapter。...可以发现 ListAdapter 就是 strategy 接口,ArrayAdpater 等就是具体的实现类,而在 ListView 中引用的是 接口 ListAdapter,可以证实这就是一个 策略模式...setAdapter 一样,ValueAnimator 的 setInterpolator 方法中也引用的是 接口 TimeInterpolator: @Override public

    47820

    Kotlin中的协程及在Android中的应用

    提前说一下async和launch的区别: async函数体中最后一行代码表达式运行结果会作为结果返回,也就是Deferred中的泛型T,我们可以通过其他协程函数获取到这个执行结果,而launch没有这样的返回值...比如:网络请求,数据库操作,文件操作等 Main:UI调度器,只有在UI编程平台上有意义,用于更新UI,例如Android中的主线程 Unconfined:非受限调度器,无所谓调度器,当前协程可以运行在任意线程上...()) } 那如果我们想在协程运行中改变线程怎么办?...协程的生命周期: 协程创建以后,处于New(新建)状态, 协程启动(调用start()方法)以后,处于Active(活跃) 状态, 协程及所有子协程完成任务以后,处于Completed(完成) 状态,...被关键字suspend修饰的函数称为挂起函数,挂起函数只能在协程或者另一个挂起函数中调用。

    1.2K10

    Three光源Target位置改变光照方向不变的问题及解决方法

    0x00 楔子 在 Three.js 中,光源的目标(target)是一种用于指定光源方向的重要元素。在聚光灯中和定向光(DirectionalLight)中都有用到。...有时我们可能会遇到光源目标位置更新后,但光照方向未正确更新的问题。 这个问题并不复杂,但是有时候出现了,往往会想不到原因。...0x01 原因 出现这个问题的原因其实就是ligt的目标对象(target) 没能更新他的相关矩阵数据,导致光源获取的总是老的数据。...没有更新的原因,最主要的原因是target 没有添加到场景中,导致three自动更新对象的矩阵数据的机制不能体现到target上。 0x02 解决方案 知道了原因,解决方案就简单了。...总结 通过以上步骤,你应该能够解决聚光灯和定向光中光源目标不更新的问题。详细检查你的代码并确保所有设置和属性都正确应用。希望这篇文章对你解决 Three.js 中的光源目标问题有所帮助。

    41410

    android中Fatal signal 11 (SIGSEGV)的问题

    上网上查Fatal signal 11 (SIGSEGV),直说是和内存有关,具体为什么真的不知道,而且是丈二的和尚摸不着头脑,除了这一句没有明显的提示了。...我的程序时双库的调用,先上段代码吧,这都是赤裸裸的教训啊!!...,而且逻辑上都没有问题,数组越界就更使不肯能了,之前做的时候倒是碰到了数组越界的问题,但是这次绝对没有越界的事儿了。...灵机一动,不知怎地,就想到JNI接口中应该将传递进来的参数转换一下,否则无法赋值和调用,于是乎就试了下,一系列的GetArrayLength,GetIntArrayElements后,将可以操作的数组作为参数传递进了函数内...,果然是这个问题,给自己鼓下掌吧,帅呆了。

    1.7K10

    激光熔覆在农机修复强化中的应用及研究方向

    图片 原位修复:农业机械的使用强度高,工作环境条件差,许多农机零部件在长期使用中处于超负荷运行的状态,因此很容易出现塑性变形、磨损、裂纹、腐蚀等问题。...比如,齿轮部件在农机运行的过程中,会受到较强的交变应力的影响,容易导致飞边、啃齿、变形等问题,采用激光熔覆技术则可以使缺损的齿轮恢复原有的尺寸。...在45钢表面激光熔覆制备Fe60合金涂层,外加机械振动和磁场的复合场装置进行辅助,在复合场作用下涂层中Fe-Cr固溶体含量得到有效提升,显著提高了涂层的耐腐蚀性,为进一步优化激光熔覆强化农机的工艺提供了指导方向...图片 提高硬度:因土壤下会存在较大型的石块和植物根茎,旋耕刀、圆盘耙这类耕作部件在翻耕犁地的过程中可能会遇到大的冲击而受到损害,这就对农业机械的硬度有更高的要求。...在同等激光功率及送粉量的条件下,Ni60合金熔覆涂层的硬度较高,但存在较多的裂纹缺陷,而Fe60合金结合区硬度高,整体硬度分布平缓,形成良好的冶金结合,且无明显缺陷,与镍基合金相比较,铁基合金粉末综合性能理想

    41750

    快速解决Android中的selinux权限问题

    关于selinux的详细资料,请查阅http://blog.csdn.net/innost/article/details/19299937 在Android开发的过程中,遇到关于selinux相关的东西...neverallow用来检查安全策略文件中是否有违反该项规则的allow语句(不可修改newerallow的定义) 如external/sepolicy/netd.te文件中,语句 neverallow...开启) getenforce ##获取SELinux状态(permissive,enforcing,disabled) 当然,如果要验证某些selinux问题,可以在...cmdline中加入androidboot.selinux=0来关闭selinux 或者到Android源码的根目录下,直接修改system/core/init/init.c文件。.../下,然后用grep进行字符串进行检索,确保修改成功,最后把相应的文件push到机器上验证(高版本的Android手机需要解锁后,push后才能生效)。

    1.9K20

    Android NDK层发起HTTP请求的问题及解决

    在实际使用中,的确可以通过引入 fcl-web 来完成跨平台的网络请求,然而在 Android 端实际测试时,却发生了奇怪的错误。...比如说请求我自己的服务器 www.rarnu.com,会发生以下错误: ? 而当我换用 IP 地址来请求时,却是可以成功的。 输入的域名是实际存在的,可以排除掉域名本身的问题。...而使用 adb shell 连入设备,并使用 ping 命令访问该域名,也是正常的。 那么问题可能就出在,找不到 nameserver。...程序执行后打出来 -1,也就是说在 Android 下,由于 DNSServers 变量中没有任何的数据,导致了完全无法解析域名,在其他平台下,在此处打日志均显示 0,表示在这个数组里有一个下标为 0...最后,把上面的 InitResolver 改一下,使其可以正常加载工作于 Android 端的这段代码: ? 编译运行程序,Error resolving host 的问题即得到了解决。

    1.5K20

    漏洞预警 | 高危Android漏洞绕过签名检测机制,篡改替换App

    移动安全公司GuardSquare的研究团队发现,该漏洞存在于Android操作系统读取应用程序签名的机制中。...漏洞编号 CVE-2017-13156 漏洞等级 高危(High) 影响范围 5.1.1 6.0 6.0.1 7.0 7.1.1 7.1.2 8.0 漏洞详情 来自GuardSquare公司的研究人员表示...Janus攻击的唯一不足之处在于,它不能通过在官方Play商店中推送恶意更新,攻击者必须让用户到第三方应用商店安装更新。...根据GuardSquare的报告,Janus漏洞只影响使用v1签名方案签名的应用程序。使用签名方案v2签署的应用不受影响。 另外,Janus仅影响运行Android 5.0及更高版本的设备。...(由于Android系统众所周知、饱受诟病的碎片化问题,手机厂商的推送往往要等候多时,我们也会持续跟进进展。)

    1.3K100
    领券