![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
讲义
文章平均质量分 81
li6472
这个作者很懒,什么都没留下…
展开
-
Android JNI开发(第一篇)
一 前导1、前导 2、什么是NDK(Native Develop Kit 本地开发) 3、为什么使用NDK 4、NDK到SO 5、JNI二 什么是NDK(Native Develop Kit 本地开发)第三方应用完成可以通过JNI调用自己的C动态度。于是NDK就应运而生了。官网地址:Android NDK官网Android NDK 是一套允许您使用原生代码语言(例如C和C++) 实现部分应用的工具集。在开发某些类型应用时,这有助于您重复使用以这些语言编写的代码库。...原创 2021-10-28 16:20:23 · 582 阅读 · 0 评论 -
蓝牙的配置与调用
Android蓝牙音乐:Android蓝牙音乐_li6472的博客-CSDN博客解释都在代码里。可以通过复制到IDEL中,然后慢慢分析,很全面,直接用就可以一 AndroidManifest.xml中添加权限 <!-- 蓝牙 --> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="andr...原创 2021-10-19 18:11:09 · 1524 阅读 · 0 评论 -
Android蓝牙音乐
一 蓝牙权限在apk中的AndroidManifest.xml中要有以下语句获得蓝牙相关权限: <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission...原创 2021-10-19 13:56:59 · 2238 阅读 · 1 评论 -
ViewModel(Factory 与 key)
一 为什么要学习ViewModel自定义实例?那么你可能会疑问了,使用 ViewModelProviders.of(getActivity()).get(ViewModel.class); 创建ViewModel这么简单轻松,为什么还要自己构建Factory呢。原因有以下几点:如果你继承的ViewModel类是有参构造,那么上面这个方式是不支持在实例ViewModel的传参的,所以需要自己构建Factory类 一个Activity可能根据业务会有多个不同的ViewModel,那么根据不同的业务下配原创 2021-09-14 16:17:58 · 897 阅读 · 0 评论 -
MutableLiveData详解
一 LiveData是干什么的?1.首先LiveData其实与数据实体类(POJO类)是一样的东西,它负责暂存数据.2.其次LiveData其实也是一个观察者模式的数据实体类,它可以跟它注册的观察者回调数据是否已经更新.3.LiveData还能知晓它绑定的Activity或者Fragment的生命周期,它只会给前台活动的activity回调(这个很厉害).这样你可以放心的在它的回调方法里直接将数据添加到View,而不用担心会不会报错.(你也可以不用费心费力判断Fragment是否还存活)二.原创 2021-09-14 15:36:48 · 14762 阅读 · 0 评论 -
fragment调用方法isadded()、isvisible()、isDetached()
一 public final boolean isAdded()如果该Fragment对象被添加到了它的Activity中,那么它返回true,否则返回false。二 public final boolean isDetached()如果该Fragment已经明确的从UI中分离,那么它返回true。也就是说,在该Fragment对象上使用FragmentTransaction.detach(Fragment)方法。该方法在API Level 13中被引入。三 public final b原创 2021-09-14 11:24:09 · 950 阅读 · 0 评论 -
一个使用Room库的实例
1.添加依赖:implementation 'android.arch.persistence.room:runtime:1.0.0'annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'2.创建Entity实体类:每个Entity实体对象都会映射为表中的某一行@Entity(tableName = "student") //使用Entity注解定义表名为studentpublic class原创 2021-09-13 13:26:03 · 140 阅读 · 0 评论 -
Room库
一 引言Room是Jetpack组件中一个对象关系映射(ORM)库。可以很容易将 SQLite 表数据转换为 Java 对象。Room 在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库。 支持与LiveData、RxJava、Kotlin协成组合使用。 Google 官方强烈推荐使用Room。二 优点编译期检查,Room会在编译的时候验证每个@Query和@Entity等,它不仅检查语法问题,还会检查是否有该表,这就意味着几乎没有任原创 2021-09-13 13:09:41 · 328 阅读 · 0 评论 -
Android中XML的命名空间、自定义属性
命名空间里面存放的是特定属性的集合,android、tools、app(自定义命名空间)1、androidxmlns:android=”http://schemas.android.com/apk/res/android”xmlns:即xml namespace,声明我们要开始定义一个命名空间了android:称作namespace-prefix,它是命名空间的名字http://schemas.android.com/apk/res/android:这看起来是一个URL,但是这...原创 2021-09-10 16:48:17 · 463 阅读 · 0 评论 -
android之Fragment
一 Fragment的生命周期图二 核心要点:官方文档说创建Fragment时至少需要实现三个方法:onCreate( ),onCreateView( ),OnPause( ); 不过貌似只写一个onCreateView也是可以的... Fragment的生命周期和Activity有点类似:三种状态: Resumed:在允许中的Fragment可见 Paused:所在Activity可见,但是得不到焦点 Stoped: ①调用addToBackStack(),Fragment被添加到Bc原创 2021-08-31 14:35:49 · 120 阅读 · 0 评论 -
android之Intent之复杂数据的传递
1.Intent传递简单数据还记得我们在Activity那里学过如何在两个Activity中互相传递简单数据的方法吗?就是可以直接通过调用Intent的putExtra()方法存入数据,然后在获得Intent后调用getXxxExtra获得 对应类型的数据;传递多个的话,可以使用Bundle对象作为容器,通过调用Bundle的putXxx先将数据 存储到Bundle中,然后调用Intent的putExtras()方法将Bundle存入Intent中,然后获得Intent以后, 调用getExt原创 2021-08-31 14:01:12 · 642 阅读 · 0 评论 -
android之intent
四大组件间的 枢纽——Intent(意图)startActivity(Intent)/startActivityForResult(Intent):来启动一个Activity startService(Intent)/bindService(Intent):来启动一个Service sendBroadcast:发送广播到指定BroadcastReceiver 另外别忘了我们在注册四大组件时,写得很多的Intent-Filter1.显式Intent与隐式Intent的区别显式Inten原创 2021-08-31 13:37:07 · 108 阅读 · 0 评论 -
android之activity数据传递
一 Activity间的数据传递:二 多个Activity间的交互(后一个传回给前一个)三 随时关闭所有Activity有时我们可能会打开了很多个Activity,突然来个这样的需求,在某个页面可以关掉 所有的Activity并退出程序!好吧,下面提供一个关闭所有Activity的方法, 就是用一个list集合来存储所有Activity!具体代码如下:public class ActivityCollector { public static LinkedL原创 2021-08-31 11:38:26 · 230 阅读 · 0 评论 -
android之activity
一 介绍Activity是一个应用程序的组件,他在屏幕上提供了一个区域,允许用户在上面做一些交互性的操作, 比如打电话,照相,发送邮件,或者显示一个地图!Activity可以理解成一个绘制用户界面的窗口, 而这个窗口可以填满整个屏幕,也可能比屏幕小或者浮动在其他窗口的上方!二 Activity的概念与Activity的生命周期图:注意事项:1. onPause()和onStop()被调用的前提是: 打开了一个新的Activity!而前者是旧Activity还可见的状态;后者是旧Activ原创 2021-08-31 11:22:45 · 153 阅读 · 0 评论 -
监听与回调
例如:TouchListener与OnTouchEvent的比较TouchListener是基于监听的,而OnTouchEvent则是基于回调的1.基于监听的TouchListener代码解析:设置一个ImageView,然后setOnTouchListener,重写onTouch方法即可实现代码: main.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"原创 2021-08-30 15:56:32 · 598 阅读 · 0 评论 -
android事件监听处理机制
1.基于监听的时间处理机制模型流程模型图:Step 1:为某个事件源(组件)设置一个监听器,用于监听用户操作Step 2:用户的操作,触发了事件源的监听器Step 3:生成了对应的事件对象Step 4:将这个事件源对象作为参数传给事件监听器step 5:事件监听器对事件对象进行判断,执行对应的事件处理器(对应事件的处理方法)2.五种不同的使用形式:我们以下面这个: 简单的按钮点击,提示Toast信息的程序;使用五种不同的形式来实现!1)直接用匿名内部类平时最常用原创 2021-08-30 14:37:28 · 527 阅读 · 0 评论 -
Git 服务器搭建
我们也可以自己搭建一台 Git 服务器作为私有仓库使用。接下来我们将以 Centos 为例搭建 Git 服务器。1、安装Git$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel$ yum install git接下来我们 创建一个git用户组和用户,用来运行git服务:$ groupadd git$ useradd git -g git2、创建证书登录原创 2021-08-27 15:23:26 · 71 阅读 · 0 评论 -
Git Gitee
大家都知道国内访问 Github 速度比较慢,很影响我们的使用。如果你希望体验到 Git 飞一般的速度,可以使用国内的 Git 托管服务——Gitee(gitee.com)。Gitee 提供免费的 Git 仓库,还集成了代码质量检测、项目演示等功能。对于团队协作开发,Gitee 还提供了项目管理、代码托管、文档管理的服务,5 人以下小团队免费。接下来我们学习一下如何使用 Gitee。由于我们的本地 Git 仓库和 Gitee 仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息。1原创 2021-08-27 15:21:19 · 74 阅读 · 0 评论 -
Git 远程仓库(Github)
Git 并不像 SVN 那样有个中心服务器。目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。本例使用了 Github 作为远程仓库,你可以先阅读我们的Github 简明教程。添加远程库要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,命令格式如下:git remote add [shortname] [url]本例以 Github 为例作为远程仓库..原创 2021-08-27 15:13:31 · 411 阅读 · 0 评论 -
Git 标签
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。比如说,我们想为我们的 runoob 项目发布一个"1.0"版本。 我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEAD)"v1.0"的标签。-a 选项意为"创建一个带注原创 2021-08-27 14:16:29 · 81 阅读 · 0 评论 -
Git 查看提交历史
Git 提交历史一般常用两个命令:git log- 查看历史提交记录。 git blame <file>- 以列表形式查看指定文件的历史修改记录。git log$ git log --reverse --oneline我们可以用 --oneline 选项来查看历史记录的简洁的版本。$ git log --oneline$ git log --onelined5e9fc2 (HEAD -> master) Merge branch 'change_site'..原创 2021-08-27 14:01:49 · 695 阅读 · 0 评论 -
Git 分支管理
几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。有人把 Git 的分支模型称为必杀技特性,而正是因为它,将Git从版本控制系统家族里区分出来。创建分支命令:git branch (branchname)切换分支命令:git checkout (branchname)当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。合并分支命令:git me..原创 2021-08-27 13:33:47 · 128 阅读 · 0 评论 -
Git 基本操作
git clone、git push、git add、git commit、git checkout、git pull说明:workspace:工作区 staging area:暂存区/缓存区 local repository:版本库或本地仓库 remote repository:远程仓库一个简单的操作步骤:git init - 初始化仓库。git add . - 添加文件到暂存区。git commit - 将暂存区内容添加到仓库中。创建仓库命令命令 说明 .原创 2021-08-27 11:38:21 · 70 阅读 · 0 评论 -
Git 创建仓库
一 git initGit 使用git init命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以git init是使用 Git 的第一个命令。在执行完成git init命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。使用方法使用当前目录作为Git仓库,我们只需使它初始化。git init该命令执行完后会在当前目录生成一个 .git 目录。使用我们指定目录作为Git仓库。...原创 2021-08-27 11:33:34 · 525 阅读 · 0 评论 -
Git 工作区、暂存区和版本库
基本概念工作区:就是你在电脑里能看到的目录。 暂存区:英文叫 stage 或 index。一般存放在.git目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是 Git 的版本库。下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 ...原创 2021-08-27 10:49:38 · 61 阅读 · 0 评论 -
Git 工作流程
一般工作流程如下:克隆 Git 资源作为工作目录。 在克隆的资源上添加或修改文件。 如果其他人修改了,你可以更新资源。 在提交前查看修改。 提交修改。 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。...原创 2021-08-27 09:11:45 · 66 阅读 · 0 评论 -
Git 安装配置
一 Linux 平台上安装Git 的工作需要调用 curl,zlib,openssl,expat,libiconv 等库的代码,所以需要先安装这些依赖工具。在有 yum 的系统上(比如 Fedora)或者有 apt-get 的系统上(比如 Debian 体系),可以用下面的命令安装:各 Linux 系统可以使用其安装包管理工具(apt-get、yum 等)进行安装Debian/Ubuntu(安装命令)$ apt-get install libcurl4-gnutls-dev libex原创 2021-08-26 17:28:38 · 232 阅读 · 0 评论 -
Git详述(一)
一 简述1 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。2 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。3 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。二 Git 与 SVN 区别Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。1、Git 是分布式的,SVN 不是2、Gi.原创 2021-08-26 17:01:08 · 89 阅读 · 0 评论 -
线程之Runnable接口
一 实现Runnable接口。Runnable只是一个接口,它里面只有一个run()方法,没有start()方法, public interface Runnable{ public void run(); } Thread类,有一个构造方法,参数是Runnable对象,也就是说可以通过Thread类来启动Runnable实现多线程。class MyThread implements Runable{ @Override ..原创 2021-08-26 16:43:49 · 430 阅读 · 0 评论 -
ViewModel速成
一 主要应用场合ViewModel主要是拿来获取或者保留Activity/Fragment所需要的数据的,开发者可以在Activity/Fragment中观察ViewModel中的数据更改(这里需要配合LiveData食用).二 优点ViewModel旨在以生命周期意识的方式存储和管理用户界面相关的数据,它可以用来管理Activity和Fragment中的数据.还可以拿来处理Fragment与Fragment之间的通信等等.当Activity或者Fragment创建了关联的ViewModel原创 2021-08-19 14:46:36 · 413 阅读 · 0 评论 -
LiveData速成
一 解释定义LiveData是一个数据持有类特征 数据可以被观察者订阅; 能够感知组件(Fragment、Activity、Service)的生命周期; 只有在组件出于激活状态(STARTED、RESUMED)才会通知观察者有数据更新; 使用实现了LifecycleOwner接口优点防止篇幅过长自己百度吧,看一下就好目录一 解释定义特征使用优点...原创 2021-08-18 18:06:02 · 566 阅读 · 0 评论 -
MVVM框架使用之xml详解
(字体放大会促进学习兴趣哦)一 DataBinding的标签(compilerCommon这个jar包中的android/databinding/tool/store/LayoutFileParser.java这个类中找到。)- layout标签(根标签)- data标签:class属性- variable标签:type属性、name属性- import标签:type属性、alias属性layout标签1 layout标签内部只能有一个直接子view,多于1个就会报错,这个和Scr原创 2021-08-18 16:32:39 · 793 阅读 · 0 评论 -
MVVM框架使用之BaseObservable与双向绑定
黑色字体重要一 双向绑定在TextView中,我们通过dataBinding把实体中的数据放到TextView中展示,这是从实体到view方向上的绑定'我们在TextView手动输入了一些数据,我们通过dataBinding把view中的数据设置到对应的实体类的字段中,这是从view到实体类方向上的绑定,整合起来就是双向绑定二 双向绑定的问题- 死循环绑定:因为数据源改变会通知view刷新,而view改变又会通知数据源刷新,这样一直循环往复,那么对于一些相同数据也要更改,浪费资源,就..原创 2021-08-18 15:43:28 · 1030 阅读 · 0 评论 -
MVVM理解
先上图模型-视图-视图模型解释一下 模型】指的是后端传递的数据。【视图】指的是所看到的页面。【视图模型】mvvm模式的核心,它是连接view和model的桥梁一 终极解释MVVM是Model-View-ViewModel的简写(它本质上就是MVC (Model-View- Controller)的改进版)两个方向:一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数...原创 2021-08-17 17:50:05 · 317 阅读 · 0 评论 -
MVVM写一个简单的程序
一 首先配置DataBinding如下以前更新UI需要进入UI线程,影响效率,它解决了将数据分解映射到各个view的问题。什么个意思?具体来说,就是针对每个Activity或者Fragment的布局,在编译阶段,会生成一个ViewDataBinding类的对象,该对象持有Activity要展示的数据和布局中的各个view的引用。同时还有如下优势:将数据分解到各个view、在UI线程上更新数据、监控数据的变化,实时更新,这样一来,你要展示的数据已经和展示它的布局紧紧绑定在了一起。我认为这才是Dat..原创 2021-08-17 17:38:57 · 216 阅读 · 0 评论 -
java回调函数
一 理解当程序跑起来时,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback二 比喻你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,原创 2021-08-17 13:55:30 · 76 阅读 · 0 评论