Activity生命周期全面分析
典型情况下的生命周期分析onStart和onResum、onPause和onStop描述上差 不多,本质上有啥不同? onStart和onStop是从Activity是否可见这个角度来回调的,onResum和onPause是从Activity是否位于前台这个角度来回调的 假设当前Activity为A,新打开一个Activity B,那么B的onResume和A的onPause哪个先执行? 旧的Activity先onPause然后新的Activity再启动 异常情况下生命周期分析情况1:资源相关的系统配置发生改变导致Activity被杀死并重新创建 这种情况下会调用onSaveInstanceState和onRestoreInstanceState方法保存和恢复数据,系统自动为我们做了一些恢复工作 系统只在Activity异常终止时候才会触发这个过程,其他情况都不触发 情况2:资源内存不足导致低优先级的Activity被杀死 优先级从高到低分下面三类: 前台Activity—–正在和用户交互,优先级最高 可见但非前台—–比如Activity中弹出一个对话框,导致Activi...
红黑树
红黑树规则 添加节点的规则
正则表达式
作用 检验字符串是否满足规则 在一段文本中查找满足要求的内容 规则
登陆注册数据备份(手动备份)
本博客以firebase服务器为例 结构图12345678users (Collection) └── uid1 (Document) └── messages (Collection) ├── message1 (Document) ├── message2 (Document) └── uid2 (Document) └── messages (Collection) ├── message1 (Document) 注册 获取auth和firestore对象 向云端上传用户信息 利用firestore建立个人档案 12345678910111213141516171819202122232425auth.createUserWithEmailAndPassword(email,password) .addOnCompleteListener(this){task -> if (task.isSuccessful){ ...
分享功能
分享纯文本1234567891011fun shareText(text: String) { val sendIntent = Intent().apply { action = Intent.ACTION_SEND putExtra(Intent.EXTRA_TEXT, text) type = "text/plain" } // 创建一个选择器,让用户选择用哪个 App 分享 val shareIntent = Intent.createChooser(sendIntent, "分享文本到...") startActivity(shareIntent)} 注意:始终使用 Intent.createChooser() 是一个好习惯。这会强制系统每次都显示一个应用选择列表,避免用户因为设置了某个应用的“默认操作”而无法选择其他应用。 分享单张图片或单个文件 在 AndroidManifest.xml 中声明 FileProvi...
计算机中的数据存储
计算机主要以二进制存储数据 二进制以0b开头 八进制以0开头 十六进制以0x开头 十进制转任意进制使用除基取余法:数据除以基数记录余数直到商为0再将余数逆序排列 任意进制转十进制:系数*基数的权次幂 相加
原码补码反码
三者关系 原码的弊端 反码出现的目的解决原码不能计算负数的问题 反码的弊端负数计算时结果不跨0没有任何问题,但是结果跨0会和实际结果有1的偏差 补码出现的目的解决反码计算时的跨0问题 注意: 计算机中数据的存储及运算都是以补码的形式进行的,补码完美解决了二进制负数的运算问题 原码反码的范围是-127~+127 补码的范围是-128~+127 运算符 左移一次相当于乘2 右移一次相当于除2
运算符
运算符与表达式 算术运算符+(加),-(减),*(乘),/(除),%(取模/取余) 如果有小数参与运算,结果有可能不准确 类型转换 隐式转换(自动类型提升) 定义:把取值范围小的数据转成取值范围大的数据 提升规则: 取值范围小的和取值范围大的进行运算,小的会先转成大的再进行运算 byte,short,char三种类型数据进行运算会优先转成int类型再进行运算 强制转换 定义:把取值范围大的数据赋值给取值范围小的变量 格式:目标数据类型 变量=(目标数据类型)被强制转化的数据 字符串的”+“操作 字符相加(字符与字符,字符与数字)字符相加时会先将字符转换成ASCII码表对应的int类型数值再进行计算 赋值运算符 扩展的赋值运算符隐含了强制类型转换 关系运算符 关系运算符的结果都是boolean类型 逻辑运算符 短路逻辑运算符 三元运算符格式关系表达式?表达式1:表达式2; 计算规则: 首先计算关系表达式的值 为true返回表达式1 为false返回表达式2 运算符的优先级
Java基础概念
注释注释的定义 注释是在程序指定位置添加的说明性信息 对代码的解释,不参与编译 分类 单行注释 格式//注释信息 多行注释 格式/* 注释信息 */ 文档注释 格式/**注释信息*/ 关键字特点及定义 被java赋予特定含义的英文单词 关键字字母全部小写 class 用于创建或定义一个类 类是java最基本的组成单元 字面量分类 ‘\t’制表符在打印的时候,把前面字符串的长度补齐到8,或者8的整数倍。最少补1个空格,最多补8个。 数据类型分类基本数据类型和引用数据类型 基本数据类型 long和float数据类型后面需要分别加上L和F标识 取值范围大小关系double>float>long>int>short>byte 标识符命名规则—–硬性规则 由数字,字母,下划线,美元符组成 不能以数字开头 不能是关键字 区分大小写 命名规则—–软性建议 小驼峰命名法(适用于方法,变量) 标识符是一个单词时,全部小写 标识符是多个单词时,第一个单词首字母小写其他单词首字母大写 大驼峰命名法(适用于类名) 标识符是一个单词时,首字母大写...














