Android
文章平均质量分 57
艾特小王子
亚伯拉罕·林肯:你可以向你希望的那样快乐。
展开
-
[JetPack] LiveData源码解析
1. 背景 官网LiveData笔者在开发一款即时通讯和音视频应用时,发现需要花费很大的力量去处理系统组件之间的数据传递,稍微有点不注意,就会出现状态错乱不同步的问题,影响用户体验,也给系统稳定性带来了许多影响。因此,在我们2.0版本的重构过程中,毅然决定引入LiveData,经过实践证明,其是一种优秀的解决方案,很适合处理此类问题,但也有一些细节需要注意,因此有了这篇文章,希望可以记录下来。1.1 定义数据持有类感知组件生命周期数据能够被观察者所观察1.2 使用 LiveData 的优势原创 2020-11-24 11:11:43 · 532 阅读 · 0 评论 -
Android Styling System 知识体系
Android Styling System1. 背景2. 主题背景与样式的区别2.1 主题背景 != 样式2.1.1 共同点2.1.2 不同点2.2 样式2.2.1 样式里面有什么2.2.2 使用方法2.2.3 范围2.3 主题背景2.3.1 什么是主题背景?2.3.2 使用方法2.3.3 范围3.常见的主题背景属性3.1 还可以使用哪些主题背景属性的功能呢?3.2 命名空间3.3 如何自定义一个主题背景3.3.1 在 attrs.xml 中定义主题背景属性:3.3.2 在不同的主题背景中使用不同的值:3原创 2020-10-27 15:40:15 · 185 阅读 · 0 评论 -
[JetPack] androidx.lifecycle库中ViewModel的新旧版本API差异
1.背景谷歌官方的JetPack框架给开发者带来了丰富、好用的接口组件,很大程度上提升了应用质量和开发效率。但在开发过程中,笔者遇到一个问题,从截图(如下)上面可以看到,旧版本的API被添加了Deprecated,也就是 不给推荐使用。2.ViewModelProviders接口构造ViewModel的实现原理查看 ViewModelProviders.of(this) 方法 @Deprecated @NonNull @MainThread public stat原创 2020-10-09 10:04:32 · 637 阅读 · 0 评论 -
Android硬编解码MediaCodec使用笔记
一、MediaCodec介绍MediaCodec类可以用来访问底层媒体编解码器,即编码器/解码器的组件。 它是Android底层多媒体支持架构的一部分(通常与MediaExtractor,MediaSync,MediaMuxer,MediaCrypto,MediaDrm,Image,Surface和AudioTrack一起使用)。 In broad terms, a codec proc...原创 2018-05-06 22:30:56 · 2341 阅读 · 0 评论 -
时间复杂度与常见排列算法
一、时间复杂度概念1、时间复杂度概念提到时间复杂度,第一时间想到的是算法,简单说,算法就是你解决问题的方法,而你用这个方法解决这个问题所执行的语句次数,称为语句频度或者时间频度,记为T(n)。什么是时间复杂度,算法中某个函数有n次基本操作重复执行,用T(n)表示。 现在有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n...原创 2018-05-06 15:39:55 · 1855 阅读 · 0 评论 -
Gradle日常开发技巧总结
一、基础概念篇1、Gradle:是一个工具,同时它也是一个编程框架。使用这个工具可以完成app的编译打包等工作。通过安装Gradle插件让系统能支持运行Gradle。安装AS后就已经帮我安装了Gradle插件。但Gradle插件是独立于Android Studio运行的。2、Gradle version:配置文件路径==>youProject/gradle/wrapper...原创 2018-05-06 15:37:49 · 274 阅读 · 0 评论 -
Android不同系统版本的悬浮窗权限问题
Android悬浮窗权限问题一、悬浮窗适配的两种方法:1、按照正规的流程,如果系统没有赋予 APP 弹出悬浮窗的权限,就先跳转到权限授权界面,等用户打开该权限之后,再去弹出悬浮窗,比如 QQ 等一些主流应用就是这么做得; 2、利用系统的漏洞,绕过权限的申请,简单粗暴;不建议使用,因为兼容性有待商榷。 3、大脑模糊区域:悬浮窗与对话框权限是不同的,是不一样的。二、不同系统版本...原创 2018-02-24 15:29:34 · 1466 阅读 · 0 评论 -
librtmp开源库与android平台编译记录
一、编写目的为了记录编译librtmp开源库过程遇到的问题,帮助后来人提供参考,希望本文能为大家提供参考。二、简介(官方介绍)The Real-Time Messaging Protocol (RTMP) is used for streaming multimedia content across a TCP/IP network. This API provides most client f原创 2018-01-03 16:29:14 · 3767 阅读 · 0 评论 -
Android JNI模板与读取系统属性笔记
一、编写目的本文主要提供一个简单可用的 jni 模板,便于在APK中编写native代码。通过记录,希望能对jni学习有一个更深的认识。二、APP中的jni模板1、jni文件在项目中的截图2、详细步骤1)、在src/main/ 层,创建jni目录用于存放,native代码2)、增加Android.mk# Android.mk for check is rightful boardLOCAL_PAT原创 2018-01-02 16:17:53 · 2860 阅读 · 0 评论 -
个人技术发展方向
今天看到一篇文章,里面有一段话,我想对于现在的我很有感触。学习技术不外乎以下两个方向:1、广度:整个使用链条有哪些环节构成的?每个环节的作用是什么?都有哪些类似的可替代方案?它们之间有什么区别?各自优劣点是什么?。。。2、深度:这个【技术、产品】的本质是什么?都能做什么?运行原理是什么?底层是如何实现的?可以做怎样的改进?。。。不管你在做什么工作,都应该先把自己每天都要用的核心原创 2017-07-24 22:04:09 · 502 阅读 · 0 评论 -
如何对应用进行Android系统签名和常用adb命令总结
如何对应用进行Android系统签名和常用adb命令总结一、非系统APP应用添加系统权限的两种方法:应用场景:系统权限(AndroidManifest.xml中manifest节点中加入android:sharedUserId=”android.uid.system”这个属性)方法一:将APP工程放置到系统源码环境,进行编译,并打包到系统ROM包里面;则默认具有系统权限;方法二:利用系统的签名原创 2017-06-19 15:38:11 · 2482 阅读 · 0 评论 -
21分钟入门MySQL笔记
概念:Relational Database Management System,关系型数据库登录到MySQL:mysql -h 主机名 -u 用户名 -p创建一个数据库:create database 数据库名 [其他选项]; create database samp_db character set gbk; // 设置编码格式选择所要操作的数据库: 1、登陆时指定:mysql -D原创 2017-06-19 14:44:34 · 376 阅读 · 0 评论 -
C++:string类型与char*类型转换方法
string类型与char*类型转换方法string 是c++标准库里面其中一个,封装了对字符串的操作;把string转换为char* 有3中方法;利用string类的 data()方法string str="abc";char *p=str.data();printf("%s\n", p); // 输出abc利用string类的 c_str()方法string str="abc";ch原创 2017-06-19 14:38:09 · 689 阅读 · 0 评论