作者小头像 Lv.2
77 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

大数据、人工智能、编程语言、微服务架构
个人勋章
TA还没获得勋章~
成长雷达
20
57
0
0
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

大数据、人工智能、编程语言、微服务架构

达成规则

发布时间 2020/11/13 14:39:08 最后回复 Zhoubo 2020/12/20 20:56:03 版块 社区活动
10075 144 0
他的回复:
华为云ID: Warn007 + 第二周学习笔记 # Android Activity理解补充 ## 1、什么是Activity `Activity`是一个Android的应用组件,它提供屏幕进行交互。每个Activity都会获得一个用于绘制其用户界面的窗口,窗口可以充满哦屏幕也可以小于屏幕并浮动在其他窗口之上。 一个应用通常是由多个彼此松散联系的Activity组成,一般会指定应用中的某个Activity为主活动,也就是说首次启动应用时给用户呈现的Activity。将Activity设为主活动的方法,如下面代码所示需要在AndroidManifest文件中添加以下内容 ```java .... .... ``` 当然`Activity`之间可以进行互相跳转,以便执行不同的操作。每当新Activity启动时,旧的Activity便会停止,但是系统会在堆栈也就是返回栈中保留该Activity。当新Activity启动时,系统也会将其推送到返回栈上,并取得用户的操作焦点。当用户完成当前Activity并按返回按钮是,系统就会从堆栈将其弹出销毁,然后恢复前一Activity 当一个`Activity`因某个新Activity启动而停止时,系统会通过该Activity的生命周期回调方法通知其这一状态的变化。Activity因状态变化每个变化可能有若干种,每一种回调都会提供执行与该状态相应的特定操作的机会。 ## 2、管理Activity生命周期 周期即活动从开始到结束所经历的各种状态。生命周期即活动从开始到结束所经历的各个状态。从一个状态到另一个状态的转变,从无到有再到无,这样一个过程中所经历的状态就叫做生命周期。 ### Activity本质上有四种状态: 1.运行(Active/Running):Activity处于活动状态,此时Activity处于栈顶,是可见状态,可以与用户进行交互 2.暂停(Paused):当Activity失去焦点时,或被一个新的非全面屏的Activity,或被一个透明的Activity放置在栈顶时,Activity就转化为Paused状态。此刻并不会被销毁,只是失去了与用户交互的能力,其所有的状态信息及其成员变量都还在,只有在系统内存紧张的情况下,才有可能被系统回收掉 3.停止(Stopped):当Activity被系统完全覆盖时,被覆盖的Activity就会进入Stopped状态,此时已不在可见,但是资源还是没有被收回 4.系统回收(Killed):当Activity被系统回收掉,Activity就处于Killed状态 如果一个活动在处于停止或者暂停的状态下,系统内存缺乏时会将其结束(finish)或者杀死(kill)。这种非正常情况下,系统在杀死或者结束之前会调用onSaveInstance()方法来保存信息。同时,当Activity被移动到前台时,重新启动该Activity并调用onRestoreInstance()方法加载保留的信息,以保持原有的状态。
发布时间 2020/11/13 14:39:08 最后回复 Zhoubo 2020/12/20 20:56:03 版块 社区活动
10075 144 0
他的回复:
华为云ID: Warn007 + 第一周学习笔记 # Android之compileSdkVersion、minSdkVersion 以及 targetSdkVersion ## compileSdkVersion > compileSdkVersion: 编译应用的版本 compileSdkVersion 告诉 Gradle 用哪个 Android SDK 版本编译你的应用。它纯粹只是在编译的时候使用。当你修改了 compileSdkVersion 的时候,可能会出现新的编译警告、编译错误等(你真的应该修复这些警告,他们的出现一定是有原因的)。 > 注意:修改 compileSdkVersion 不会改变运行时的行为,compileSdkVersion 并不会打包进APK里只是在编译时使用 因此强烈推荐总是使用最新的 SDK 进行编译。在自己的代码上使用最新SDK的编译检查可以获得很多好处,可以避免使用最新弃用的 API ,并且为使用新的 API 做好准备。 注意,如果使用Support Library,那么使用最新发布的 Support Library 就需要使用最新的 SDK 编译。通常,新版的 Support Library 随着新的系统版本而发布,它为系统新增加的 API 和新特性提供兼容性支持。例如,要使用 23.1.1 版本的 Support Library ,compileSdkVersion 就必需至少是 23 (大版本号要一致!)。 ## minSdkVersion > minSdkVersion 是应用可以运行的最低版本要求。minSdkVersion 是应用商店用来判断用户设备是否可以安装某个应用的标志之一。 在开发时 minSdkVersion 也起到一个重要角色:lint。默认会在项目中运行,它在你使用了高于 minSdkVersion 的 API 时会警告你,帮你避免调用不存在的 API 的运行时问题。如果只在较高版本的系统上才使用某些 API,通常使用运行时检查系统版本的方式解决。 请记住,你所使用的库可能有他们自己的 minSdkVersion 。你的应用设置的 minSdkVersion 必需大于等于这些库的 minSdkVersion 。例如有三个库,它们的 minSdkVersion 分别是 4, 7 和 9 ,那么你的 minSdkVersion 必需至少是 9 才能使用它们。在少数情况下,你仍然想用一个比你应用的 minSdkVersion 还高的库(处理所有的边缘情况,确保它只在较新的平台上使用),你可以使用 [tools:overrideLibrary 标记](https://link.jianshu.com/?t=http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger?utm_campaign=adp_series_sdkversion_010616&utm_source=medium&utm_medium=blog#TOC-tools:overrideLibrary-marker),但请做彻底的测试! ## targetSdkVersion > targetSdkVersion 是 Android 系统提供前向兼容的主要手段。 compileSdkVersion 和 minSdkVersion 都非常好理解,前者表示编译的 SDK 版本,后者表示应用兼容的最低 SDK 版本。但是对于 targetSdkVersion 其实很难一句话解析清楚。 > 原文:targetSdkVersion is the main way Android provides forward compatibility targetSdkVersion 是 Android 系统提供前向兼容的主要手段。这是什么意思呢?随着 Android 系统的升级,某个 API 或者模块的行为可能会发生改变,但是为了保证APK 的行为还是和以前一致。只要 APK 的 targetSdkVersion 不变,即使这个 APK 安装在新 Android 系统上,其行为还是保持老的系统上的行为,这样就保证了系统对老应用的前向兼容性。
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32560 472 0
他的回复:
华为云ID: Warn007 ## 运算符 JavaScript中常用的逻辑运算符有逻辑与`&&` 、逻辑或`||` 、逻辑非`!`三种。 ### 逻辑运算 #### 布尔运算 逻辑运算符连接布尔值(Boolean)来进行最终的布尔判断,在开发中常用于多个条件的判断 - 逻辑与`&&` 连接的,只要有一个为false,最终的结果就是false - 逻辑或`||` 连接的,只要有一个为true,最终的结果就是true - 逻辑非`!` 是针对单个表达式进行取反,表达式为false,最终的结果就是true 举例说明如下: ```javascript true && false //false true || false // true !false // true ``` #### 值或者表达式的运算 值或者表达式参与的运算多是逻辑中断(短路运算) ### 短路运算 短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值。 #### 逻辑与的短路运算 - 语法: 表达式1 && 表达式2 - 如果表达式1的值为真,则返回表达式2的值 - 如果表达式1的值为假,则返回表达式1的值 ```javascript console.log(123 && 456) // 456 console.log(0 && 456) // 0 console.log(123 && 456 && 789) // 789 ``` #### 逻辑或的短路运算 - 语法: 表达式1 || 表达式2 - 如果表达式1的值为真,则返回表达式1的值 - 如果表达式1的值为假,则返回表达式2的值 ```javascript console.log(123 || 456) // 123 console.log(0 || 456) // 456 console.log(123 || 456 || 789) // 123 ``` #### 短路运算的典型解读 在参与的表达式中包含变量进行自增`++`或者自减`--`的情况下,自增自减是否会执行。 实例说明: ```javascript var num = 0; console.log(123 || num++); // 打印-123 // 逻辑或的短路运算,左侧为真,右侧不执行,num依然是0 console.log(num); // 所以打印是-0 var num = 0; console.log(123 && num++); // 打印-0 // 逻辑与的短路运算,左侧为真,确定不了结果,执行右侧, // num++先执行后加,所以打印时num依然是0,执行以后num-1 console.log(num); // 所以打印是-1 ```