自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

有余同学的博客

Android开发笔记

  • 博客(24)
  • 收藏
  • 关注

原创 ARTS:第 1 期

“ARTS” 是一个学习打卡活动,发起人是骨灰级程序员陈皓,网名左耳朵耗子。任务是做一道 LeetCode 算法题(Algorithm)、阅读并点评一篇英文技术文章(Review)、学习一个技术技巧(Tip),或分享一篇有观点和思考的技术文章(Share),都是基于学习和思考的刻意练习。共勉一苦一乐相磨炼,炼极而成福者,其福始久;一疑一信相参勘,勘极而成知者,其知始真。——《菜根谭》一、Algorithm在讲解算法题之前,先补充一个知识点:算法的时间与空间复杂度我们评价一个算法的优劣主要从两个.

2021-05-27 09:52:34 218

原创 计算机组成原理:计算机的分类

本文目录一、超级计算机1. 特点功能最强、运算速度最快、存储容量最大的计算机多用于国家高科技领域和尖端技术研究2. 标记超级计算机运行速度的单位是 TFlop/s1 TFlop/s = 每秒一万亿次浮点计算3.如何对超级计算机做性能测试?测试软件:LINPACK(线性系统软件包)linpack 现在在国际上已经成为最流行的用于测试高性能计算机系统浮点性能的 benchmark(基准)。通过利用高性能计算机,用 高斯消元法 求解 N 元一次稠密线性代数方程组的测试,评价高性能计算机的.

2021-01-27 10:56:40 1119

原创 计算机组成原理:计算机的发展历史

本文目录本文完整的思维导图我总结到了幕布中:传送门一、计算机发展的四个阶段第一阶段:电子管(1946 - 1957)1. 电子管外形第二次世界大战中,英国为了解密德国的密文,催生了电子管计算机的产生。世界上第一台电子管计算机是:埃尼阿克 ENIAC2. 电子管计算机特点集成度小,空间占用大功耗高,运行速度慢操作复杂,更换程序需要接线第二阶段:晶体管(1957 - 1964)贝尔实验室的三个科学家发明了晶体管1. 晶体管外形全世界第一台晶体管计算机:TX-0(来自 MI

2021-01-26 18:56:44 3080

原创 Jetpack 之 LifeCycle 组件原理解析

对于 LifeCycle 组件还不了解的同学,可以先阅读这篇文章:Jetpack 之 LifeCycle 组件使用详解学习问题LifeCycle 是如何监听到 Activity/Fragment 生命周期变化的?LifeCycle 如何将生命周期变化的事件分发给观察者的?本文目录一、四个重要的类(一)LifecycleLifecycle 是一个抽象类。它内部定义了两个枚举:Event 需要分发的事件的类型,State 宿主的状态。1.Eventpublic enum Eve

2020-09-28 15:04:36 467

原创 Jetpack 之 LifeCycle 组件使用详解

一、LifeCycle 简介LifeCycle 是一个可以感知宿主生命周期变化的组件。常见的宿主包括 Activity/Fragment、Service 和 Application。LifeCycle 会持有宿主的生命周期状态的信息,当宿主生命周期发生变化时,会通知监听宿主的观察者。LifeCycle 的出现主要是为了解决: 系统组件的生命周期与普通组件之间的耦合性。系统组件指:Activity/Fragment、Service 和 Application。普通组件指:将代码按照功能或者作用封装成

2020-09-18 18:10:15 482

原创 Jetpack 简介

一、什么是 JetpackJetpack 是一个丰富的组件库,它的组件库按类别分为 4 类,分别是架构(Architecture)、界面(UI)、行为(behavior)和基础(foundation)。每个组件都可以单独使用,也可以配合在一起使用。每个组件都给用户提供了一个标准,能够帮助开发者遵循最佳做法,减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者能够集中精力编写重要的业务代码。二、Jetpack 的优势(一)解决了 Android 架构问题由于之前 Goog

2020-09-18 18:08:32 30311 5

原创 Android 基础知识7:Android 应用权限详解

这篇文章为大家系统的梳理一下 Android 权限相关的知识,在日常开发中,我们都用过权限,但是对于权限的一些细节我们可能掌握的还不够全面,这篇文章会全面的为大家介绍权限相关的知识。当然,本篇文章依然是参考了 Google 的官方文档:应用权限。本文目录一、认识 Android 权限(一)Android 系统为什么需要权限?Android 系统设置权限的目的是保护 Android 用户的...

2019-11-15 11:20:09 1946

原创 工作复盘01:如何快速上手临时接替的需求

又开始了新的一周,本次复盘主要记录两个问题先做调研,再和产品、后端聊具体实现临时接替其他同事的需求如何快速上手?1.先做调研,再和产品、后端聊具体实现在了解了具体要做的需求后,技术同学一定要做一个技术可行性的研究,如果能把需求拆分的很细的去调研可行性是最好的。调研完成后,最好输出一份调研报告,说明一下有哪些需求是可行的,哪些是不可行的,不可行的原因是什么。或者有的需求是可行的,但是有技...

2019-11-05 10:34:24 235

原创 Android 基础知识6:常用的隐式 Intent

前言本篇文章的内容其实是属于上一篇文章(Android 基础知识5:Intent 和 Intent 过滤器)的延伸,考虑到篇幅长度的原因,所以没有把本篇文章的内容写到上一篇文章中,另外单独写成一篇文章还有个好处就是方便读者查阅。这篇文章主要为大家列举了常用的隐式 Intent,大家如果在平时工作中有相关的需求可以直接复制代码使用。本文目录一、闹钟相关的操作(一)创建闹钟下面介绍一下如何创...

2019-11-01 17:29:22 976

原创 Android 基础知识5:Intent 和 Intent 过滤器

回顾在前 4 篇文章中,我们介绍了 Android 四大组件的基础知识,四大组件是构成我们 App 的基础,也是 Android 系统设计的最佳体现。各个组件之间完全是解耦的,如果想访问其他组件或者启动其他组件可以使用 Intent 来操作。在四种组件类型中,有三种(Activity、Service 和 Broadcast)均可以通过异步消息 Intent 进行启动。Intent 会在运行时对...

2019-10-25 15:01:06 1158

原创 Android 基础知识4:四大组件之 ContentProvider(外共享数据)

目录一、ContentProvider 简介(一)引入数据库在 Android 当中是私有的,不能将数据库设为 WORLD_READABLE,每个数据库都只能允许创建它的包访问。这意味着只有创建这个数据库的应用程序才可访问它。也就是说不能跨越进程和包的边界,直接访问别的应用程序的数据库。那么如何在应用程序间交换数据呢? 如果需要在进程间传递数据,可以使用 ContentProvider ...

2019-10-22 10:15:13 484

原创 Android 基础知识3:四大组件之 Broadcast(广播)

目录一、Broadcast 的定义Broadcast 是一种广泛运用的、在应用程序之间传输信息的机制,Android 中的广播与传统意义上的电台广播类似,一个广播可以有任意个接收者,当然也可能不被任何应用程序所接收。广播机制是一个典型的发布-订阅模式,也就是观察者模式。广播机制最大的特点是发送方不关心接收方是否接受到数据,也不关心接收方是如何处理数据的,通过这样的方式来达到接、收双方的完...

2019-10-22 10:07:58 612

原创 Android 基础知识2:四大组件之 Service

目录一、Service 的定义Service 是 Android 中实现程序后台运行的解决方案,它非常适合用于去执行那些不需要和用户交互而且还要求长期运行的任务。但不要被“后台”二字迷惑,Service 默认并不会运行在子线程中,它也不会运行在一个独立的进程中,它同样执行在 UI 线程中,因此,不要在 Service 中执行耗时的操作,除非你在 Service 中创建子线程来完成耗时操作。...

2019-10-22 10:04:36 746

原创 Android 基础知识1:四大组件之 Activity

Activity 是一个用户界面,通过加载一个指定的布局文件来展示各种 UI 元素,同时处理这些 UI 元素的交互事件,如点击、输入文本等。不同的 Activity 之间可以进行跳转,将不同的页面串联起来,共同完成特定的操作流程。每个应用都是由一个或者多个 Activity 组成。

2019-10-22 09:57:58 233

原创 Android NDK开发之JNI基础01:JNI开发流程

重点掌握内容:JNIEnv 运行环境:windows 10一、JNI的概念JNI是Java Native Interface的缩写。它是Java调用C/C++或者C/C++调用Java的一套API。 二、为什么要使用JNI使用JNI可以复用很多的C/C++代码,例如:ffmeng多媒体播放器,opencv图形识别的引擎,7-zip压缩,opencore框架(用于视频播...

2018-04-10 16:45:44 217

原创 Android NDK开发之C语言基础06:预编译指令

一、C语言的执行流程(一)编译    编译器将源代码转换成机器语言的过程。在编译过程中,会找出并报告错误,最后形成源文件(在Windows下是扩展名为.obj的文件,在Linux或者UNIX环境中是.o)。     编译过程包括两个阶段。第一个阶段称为预处理阶段,在此期间会修改或添加代码,第二个阶段是生成...

2018-04-08 16:04:48 365

原创 Android NDK开发之C语言基础05:文件IO

一、文件的概念C语言的文件是指用来存储数据的一种存储设备。存储在文件中的数据并不会随着计算机的关闭而消失。文件通常是存储在硬盘上的。 二、文件的访问(一)打开文件使用函数:fopen()使用方法:char *path = "H:\\AndroidNDK\\cworkspace\\files\\friends.txt";FILE *fp = fopen(pat...

2018-04-08 16:03:25 406

原创 Android NDK开发之C语言基础04:联合体&枚举

一、联合体(一)定义:在C语言中允许多个不同变量共享同一内存区的功能成为联合(union)。声明联合的语法类似于结构,给联合指点标记名称的方式通常也是类似的。关键字 union 。示例代码如下:union myValue{ int x; int y; double z;};//声明变量union myValue value;联合成员的访问方式和结构成...

2018-04-08 16:01:48 217

原创 Android NDK开发之C语言基础03:结构体&结构体与指针

一、什么是结构体 结构体是一种构造数据类型。把不同的数据类型整合起来成为一个自定义的数据类型。关键字 struct。代码示例如下:struct Man{ //成员 int age; int height; char name[20];};初始化结构体实例的方式: 方式一:struct Man man = { 12, 70, "jack" }...

2018-04-08 16:00:04 314

原创 Android NDK开发之C语言基础02:动态内存分配

一、C语言内存分配栈区(stack):windows下,栈内存分配2M(确定的常数),超出限制提示stack overflow错误。自动分配内存,自动释放。堆区(heap):程序员手动分配手动释放,可以分配操作系统80%的内存。全局区或静态区字符常量区程序代码区二、静态内存分配声明一个占40M内存的数组: void main(){ //静态内存分配 ...

2018-04-08 15:57:27 347

原创 Android NDK开发之C语言基础01:二级指针&函数指针

重点掌握内容:指针的运算、函数指针1.指针为什么要有类型?在回答这个问题前,我们来做一些尝试。 尝试1:首先将一个int类型的变量的地址赋值给一个int类型的指针,看看是否行得通。 void main(){ int i = 88; //定义一个int类型的指针 int *p = &i; printf("%#x,%d\n", p...

2018-04-08 15:44:44 324

原创 常用的刷新技术(三)——PullToRefreshlibrary

PullToRefreshlibrary 下拉刷新库一、简介PullToRefreshlibrary 为我们封装好了各种自定义View,可以直接在布局文件中引用,并且都带有下拉刷新和上拉加载的功能,给我们带来了很多方便,不像SwipeRefresh以及Ultra-PullToRefresh那样需要自己编写上拉加载的方法。二、效果图1.下拉刷新2.上拉加载三、使用步骤1.导入第三方模块:PullToR

2016-08-16 21:20:25 1637

原创 常用的刷新技术(二)——Ultra-Pull-To-Refresh

Ultra-Pull-To-Refresh效果图文字有闪动的效果消失的时候文字有坍塌的效果使用步骤1.导包compile ‘in.srain.cube:ultra-ptr:1.0.11’2.布局文件<in.srain.cube.views.ptr.PtrFrameLayout android:id="@+id/ptrFrameLayout_main" android:

2016-08-16 19:57:03 398

原创 常用的刷新技术(一)——SwipeRefresh

SwipeRefresh效果图:使用步骤:1.导包 compile ‘com.android.support:design:23.2.0’2.布局文件<android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipeRefreshLayout_main" android:layout_width=

2016-08-15 21:58:19 619

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除