- 博客(27)
- 收藏
- 关注
原创 Glide框架使用及分析(二)
本文主要梳理了一下Glide中with方法和load方法的执行逻辑,欢迎各位阅读指正,有什么疑问或者建议,欢迎留言!
2021-03-19 16:38:02 252
原创 Android AIDL实现跨进程通信
在之前的文章中简单的介绍了跨进程通信的基础知识、跨进程通讯的集中方式以及简单的记录了Binder的基础知识,接下来讨论一下Android中常用的AIDL以及Messenger这两种多进程通信方式。AIDLAIDL全称Android Interface Definition Language,即Android接口定义语言,是Binder机制实现的Android IPC使用比较广泛的工具,使用AIDL进行进程间通讯需要定义client和Server,其中client和Server可以在同一个应用也可以在不同
2021-02-25 19:56:57 401
原创 Android 跨进程通信
前言学习多进程通信之前,需要先了解一下多进程的基础知识,进程的定义在安卓中,进程是系统资源分配的最小单位,而线程是进程内部独立执行单元,是程序执行的最小单位。进程间的资源和数据互相隔离,而进程内的线程间是共享大多数资源和数据的,进程内可以运行多个线程,线程的崩溃会影响到进程的。为什么使用多进程的开发?由于系统资源紧张,每个应用可以使用的系统内存是有限制的,系统资源不足,就会抛出OOM的异常,通过多进程将占用内存高的功能运行到子进程中,就可以避免系统资源紧张的问题,就算子进程崩溃也不会影响主进程的
2021-02-25 14:31:11 772
原创 java自定义注解
注解的定义java注解(Annotation)又称java标注,是JDK5.0引入的一种注释机制。Java语言中的类、方法、变量、参数和包等都可以被标注。java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法。常见的注解jdk自带注解@Override 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public
2021-02-08 14:10:05 118 1
原创 java线程池的详解
前言线程是稀缺的资源,它的创建与销毁是比较消耗资源的操作。而java线程是依赖于内核线程,创建线程需要进行操作系统的状态切换,为了避免资源过度消耗需要设法重用线程执行多个任务。线程池就是一个线程缓存,负责对线程进行统一分配、调优和监控。线程池的优势重用存在的线程,减少线程创建,消亡的开销,提高性能提高响应速度。当任务到达时,任务可以不需要等待线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限创建不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以对线程进行统一分配、调优和监控
2021-02-07 16:49:46 86
原创 java高并发之Synchronized关键字详解
在java编码中经常会使用到Synchronized关键字,之前对Synchronized关键字不甚明白,借此机会梳理一下相关的知识点。作用synchronized是java中用于解决并发情况下数据同步访问的一个很重要的关键字,如果想保证一个共享资源在同一时间只会被一个线程访问,我们可以在代码中使用synchronized关键字对类或者对象加锁。使用方式synchronized的特性原子性所谓的原子性就是指一个操作或者多个操作,要么全部执行并执行的过程不会被任何因素打断,要么就都不执行。在j
2021-02-05 09:27:05 174
转载 Java虚拟机是如何执行线程同步的
想介绍下synchronized的原理,但是又不知道从何下手,在网上看到一篇老外的文章,介绍了和线程同步相关的几个基础知识点。所以想把它翻译一下给大家看看。相信看过这些基础知识之后再看我后面要写的synchronized的原理就会好理解一点了。原文地址:How the Java virtual machine performs thread synchronization了解Java语言的人都知道,Java代码要想被JVM执行,需要被转换成由字节码组成的class文件。本文主要来分析下Java虚拟机是
2021-02-03 11:43:54 103
原创 Thread详解
线程概述线程是现代操作系统调度的最小单元,一个进程可以创建多个线程来提高系统的吞吐量和执行效率。(进程是操作系统资源分配和调度的基本单位,它可以创建多个线程,进程可创建的线程数量和操作系统有关)线程状态如下图:Thread源码中定义了线程状态枚举 /** * 线程状态。线程可以处于以下状态之一 * NEW:尚未启动的线程处于此状态 * RUNNABLE:在java虚拟机中执行的线程处于此状态 * BLOCKED:被阻塞等待监视器锁定的线程处于此状态
2021-02-03 10:37:18 1522
转载 Java虚拟机(JVM)你只要看这一篇就够了!
本文是学习了《深入理解Java虚拟机》之后的总结,主要内容都来自于书中,也有作者的一些理解。一是为了梳理知识点,归纳总结,二是为了分享交流,如有错误之处还望指出。 用XMind画了一张导图(源文件对部分节点有详细备注和参考资料,需要的朋友可以关注我的微信公众号:Java团长,然后回复“JVM”获取): 1. Java 内存区域与内存溢出异常 1.1 运行时数据区域 根据《Java 虚拟机规范(Ja...
2021-02-02 10:58:08 136
原创 Java泛型详解
概述本质上是类型限定以及类型参数化。泛型,即“参数化类型”,提到参数,最熟悉的就是定义方法的时候有形参,然后调用方法的时候需要传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数(可以称之为类型形参),然后在使用、调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来看控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在
2021-02-01 11:37:13 142
原创 Java序列化与反序列化
序列化定义Java提供了一种对象序列化的机制,即:对象可被表示未一个字节序列,该字节序列包括该对象的数据,存储在对象中数据的类型。这些字节序列可以保存在磁盘或者通过网络传输,以达到之后反序列化成原来的对象的目的。反序列化:通常我们可以从文件或者网络中读取序列化的对象,并将其反序列化成之前的对象,获取其中的数据类型,相关数据。使用场景所有在网络以及文件流形式传播的对象都必须是可序列化的,比如(remote method invoke,即远程方法调用),出入的参数以及返回的对象都是可序列化的,否则
2021-01-30 16:51:24 68
原创 音视频开发五:学习MediaExtractor 和 MediaMuxer,知道如何解析和封装 mp4 文件
MediaExtractorMediaExtractor顾名思义就是多媒体提取器,主要负责:获取媒体文件的格式,包括音视频轨道,编码格式,宽高,采样率,声道数等,分离音频流,视频流,读取分离后的音视频数据。相关API概述:setDataSource(String path)指定数据来源,支持网络地址和本地地址getTrackCount()获取轨道数据数量getTrackFormat(int index)获取指定索引位置的轨道格式信息selectTrack(int
2021-01-27 10:56:02 318
原创 音视频开发三:使用AudioTrack完成音频pcm的播放
audiotrack基础定义audiotrack API详解audiotrack使用过程
2021-01-16 11:18:45 1326
原创 音视频开发二:Android平台PCM 数据的采集
前言Android SDK 提供了两套音频采集的API,分别是:MediaRecorder 和 AudioRecord,前者是一个更加上层一点的API,它可以直接把手机麦克风录入的音频数据进行编码压缩(如AMR、MP3等)并存成文件,而后者则更接近底层,能够更加自由灵活地控制,可以得到原始的一帧帧PCM音频数据。本文近记录AudioRecord的定义和使用。AudioRecord基础概念AudioRecord官方概念定义AudioRecord类的主要功能是让各种java应用能够管理音频资源,以便它们
2021-01-14 12:38:22 1102
原创 音视频开发一:绘制图片
本文目标在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View绘制准备:申请手机权限<!--添加权限--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNA
2021-01-13 14:25:10 121
原创 The application could not be installed: INSTALL_FAILED_TEST_ONLY解决办法
Android studio项目安装调试的时候遇到这样一个问题:The application could not be installed: INSTALL_FAILED_TEST_ONLY手机端显示安装包异常处理办法:在gradle.properties中添加android.injected.testOnly=false则可以解决这个安装的问题,例如:...
2020-12-16 16:22:19 1401 1
原创 设计模式之单例设计模式
设计模式之单例设计模式什么是设计模式设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式的原则开闭原则单一职责原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则合成复用原则设计模式的分类创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。创建型设计模式关注的是对象创建,同时隐藏创建逻辑,包含:工厂模式、抽象工厂模式、单例模式、建造者模
2020-08-10 18:17:19 81
转载 handler机制
版权声明:本文为博主原创文章,欢迎转载,转载需标明出处。 https://blog.csdn.net/qian520ao/article/details/78262289*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布前言Android的消息机制主要是指Handler的运行机制,对于大家来说Handler已经是轻车熟路了,可是真的掌握了Handler?本文主要通过几个问题...
2018-11-15 18:31:47 154
转载 多线程之Android
Android提供了四种常用的操作多线程的方式,分别是:1. Handler+Thread2. AsyncTask3. ThreadPoolExecutor4. IntentService下面分别对四种方式进行介绍。一、Handler+Thread关于Handler机制简介可以参考这篇文章,Handler可以把一个Message对象或者Runnable对象压入到消息队列中,进而在UI...
2018-11-15 17:29:31 201
转载 xml和json解析存储
1.定义介绍(1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档...
2018-11-15 16:22:48 319
转载 Android BLE与终端通信(二)——Android Bluetooth基础搜索蓝牙设备显示列表
Android BLE与终端通信(二)——Android Bluetooth基础搜索蓝牙设备显示列表摘要 第一篇算是个热身,这一片开始来写些硬菜了,这篇就是实际和蓝牙打交道了,所以要用到真机调试哟,这篇我会把基本上要讲的概念都通俗易懂的来一遍,这样我们脑子里先有个逻辑,我们就好操作了,先看一下我们的剖析图下面概念相关的可去原文查看:h...
2018-11-13 15:53:40 4809 2
转载 Android 蓝牙开发之搜索、配对、连接、通信大全
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq_25827845/article/details/52997523 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&am
2018-11-13 13:58:40 485
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人