自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

宝爷的专栏

在java的学习中,不断努力,在安卓开发上取得进步!

  • 博客(765)
  • 资源 (4)
  • 收藏
  • 关注

原创 多项目共享gradle依赖管理

gradle官方文档介绍运行 Gradle 时会检查项目中是否存在一个名为 buildSrc 的目录。然后 Gradle 会自动编译并测试这段代码,并将其放入构建脚本的类路径中, 对于多项目构建,只能有一个 buildSrc 目录,该目录必须位于根项目目录中, buildSrc 是 Gradle 项目根目录下的一个目录,它可以包含我们的构建逻辑,与脚本插件相比,buildSrc 应该是首选,因为它更易于维护、重构和测试代码Gradle 官网的描述。

2023-12-21 10:57:38 1185

原创 Android 应用进程保活方案实战

应用进程保活方案

2023-04-04 10:03:59 2687 1

原创 AI之神经网络

人工智能之神经网络

2022-11-08 10:28:23 1305 1

原创 Android多进程:生成多进程(android:process属性)

ShareUserId,在Android里面每个app都有一个唯一的linux user ID,则这样权限就被设置成该应用程序的文件只对该用户可见,只对该应用程序自身可见,而我们可以使他们对其他的应用程序可见,这会使我们用到SharedUserId,也就是让两个apk使用相同的userID,这样它们就可以看到对方的文件。例如,如果进程 A 中的内容提供程序为进程 B 中的客户端提供服务,或者如果进程 A 中的服务绑定到进程 B 中的组件,则进程 A 始终被视为至少与进程 B 同样重要。

2022-09-22 17:13:25 1377

原创 Android 13 现已正式发布,看看有哪些更新!

Android 13正式发布,看看有哪些亮点?

2022-08-17 11:17:01 1831

原创 Jetpack之App Startup的使用和不足,及改进版Android-Startup

2020 年 10 月 28 日,JetPack | App Startup 1.0.0终于迎来正式发布.目录前置知识这篇文章的内容会涉及以下前置 / 相关知识,贴心的我都帮你准备好了,请享用~ContentProvider 组件解析: Android | ContentProvider 的工作过程1. 为什么要使用 App Startup?这一节,我们来讨论为什么要使用 App Startup ,也就是 App Startup 解决了什么问题。基于 Content..

2022-04-08 10:54:40 623

原创 Jetpack之使用 Jetpack Compose 更快地打造更出色的应用

纵观Android发展至今,十余年间Google一直在针对不同的主题对它进行整改补强,其目的就是为了给使用者提供一个更加稳定安全高效的系统,当然也给开发者们提供着一个日趋完善更加舒适高效的开发平台,更好地去实现各种功能!可以看到在 UI 构建方面,基本上这么多年依赖并没有什么变化,就现在的发展趋势来说,传统的UI架构让很多开发者表示苦不堪言:UI 在构建上需要编写大量的模板代码。大家都对自定义 View 比较熟悉,每次编写都要处理 onMeasure、onLayout、onDraw,在 on

2022-01-04 17:25:15 1891 3

原创 网易新闻 QUIC 敏捷实践

通过敏捷快速实践 QUIC ,网易新闻在3个月内,将端内 QUIC 请求占比提升到 75%+,如 图1 所示,并将客户端请求平均响应时间 RT 降低了 45%,请求错误率降低了 50%+,视频卡顿率降低了 25%+。图1 客户端 QUIC 请求占比(黄色部分为 QUIC 请求,蓝色部分为其他协议请求)如何做到以最小的成本、最小的风险和最大的收益接入 QUIC,是本文讨论的核心。什么是QUIC?QUIC 是 Quick UDP Internet Connections 的缩写,意为“快

2021-12-06 10:26:34 2758

原创 阿里淘系自研标准化协议库 XQUIC

XQUIC 是阿里巴巴淘系架构团队自研的 IETF QUIC 标准化协议库实现,在手机淘宝上进行了广泛的应用,并在多个不同类型的业务场景下取得明显的效果提升。XQUIC 为手机淘宝 APP 的用户带来丝般顺滑的网络体验:在 RPC 请求场景,网络耗时降低 15% ;在直播高峰期场景,卡顿率降低 30%、秒开率提升 2% ;在短视频场景,卡顿率降低 20% 。​从以上提升效果可以看出,对 QUIC 的一个常见认知谬误:“QUIC 只对弱网场景有优化提升”是不准确的。实际上,QUIC

2021-12-03 16:47:20 1036 3

原创 安卓轻量级高效存储数据库MMKV

MMKV 由来在微信客户端的日常运营中,时不时就会爆发特殊文字引起系统的 crash,参考文章,文章里面设计的技术方案是在关键代码前后进行计数器的加减,通过检查计数器的异常,来发现引起闪退的异常文字。在会话列表、会话界面等有大量 cell 的地方,希望新加的计时器不会影响滑动性能;另外这些计数器还要永久存储下来——因为闪退随时可能发生。这就需要一个性能非常高的通用 key-value 存储组件,我们考察了 SharedPreferences、NSUserDefaults、SQLite 等常见组件,...

2021-09-16 15:28:18 274

原创 Modbus在Android上的应用

简介Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。1996年施耐德公司推出基于以太网TCP/IP的Modbus协议:ModbusTCP。Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口,采用master/slave方式通信。ModbusTCP数据帧ModbusTCP的数据帧可分为两部分:MBAP+PDU。报文头MBAPMBAP为报文

2021-07-19 10:53:09 1855

原创 详细比对:鸿蒙与安卓到底有什么区别?鸿蒙开发从这里开始

HarmonyOS 是新一代的智能终端操作系统,为不同设备的智能化、互联与协同提供了统一的语言。带来简洁,流畅,连续,安全可靠的全场景交互体验。华为鸿蒙系统(英文:huaweiHarmonyOS,HongmengOS)。在2019年8月9日,华为在东莞举行华为开发者大会,正式发布操作系统鸿蒙OS。系统定位HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平..

2021-06-25 11:54:43 9999

原创 JetPack之ViewModel

一、ViewModel简介ViewModel类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel类让数据可在发生屏幕旋转等配置更改后继续留存。Android 框架可以管理界面控制器(如 Activity 和 Fragment)的生命周期。Android 框架可能会决定销毁或重新创建界面控制器,以响应完全不受您控制的某些用户操作或设备事件。如果系统销毁或重新创建界面控制器,则存储在其中的任何瞬态界面相关数据都会丢失。例如,应用可能会在它的某个 Activity 中包含用户列表..

2021-01-26 16:04:20 201

原创 JetPack之使用LiveData

一、LiveData简介LiveData是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。如果观察者(由Observer类表示)的生命周期处于STARTED或RESUMED状态,则 LiveData 会认为该观察者处于活跃状态。LiveData 只会将更新通知给活跃的观察...

2021-01-26 09:22:22 281

原创 JetPack之使用 Room 将数据保存到本地数据库

一、ROOM简介Room 在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库。处理大量结构化数据的应用可极大地受益于在本地保留这些数据。最常见的用例是缓存相关数据。这样,当设备无法访问网络时,用户仍可在离线状态下浏览相应内容。设备重新连接到网络后,用户发起的所有内容更改都会同步到服务器。由于 Room 负责为您处理这些问题,因此我们强烈建议您使用 Room(而不是 SQLite)。二、添加ROOM库依赖1) KOTLIN:.

2021-01-25 14:39:38 381

原创 使用 Jetpack DataStore 进行数据存储

Jetpack DataStore 是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和流程以异步、一致的事务方式存储数据。如果您当前使用SharedPreferences存储数据,请考虑迁移到 DataStore。注意:如果您需要支持大型或复杂数据集、部分更新或参照完整性,请考虑使用Room,而不是 DataStore。DataStore 非常适合简单的小型数据集,不支持部分更新或参照完整性。Preferences DataS...

2021-01-22 14:47:22 432

原创 Android Kotlin开发之类详解

类(class)详解在任何一门面向对象编程的语言里,类(class)是非常基础、但也是非常重要的一项组成,通俗的说就是万般皆对象,而所说的对象就是我们生成的类。Kotlin也是如此,下面详细为大家介绍Kotlin中的类的组成结构、函数、声明等。一、类的声明1、关键字声明类的关键字为class2、声明格式class Test{ // 属性... ... // 构造函数 ... // 函数 ... // 内部类 .

2020-11-11 17:14:05 726

原创 Android Kotlin开发之基础语法概览

变量、常量、注释在Kotlin中的变量、常量以及注释多多少少和Java语言是有着不同之处的。不管是变量、常量的定义方式,还是注释的使用。下面详细的介绍Kotlin中的变量、常量、注释的使用。一、Kotlin之变量用法kotlin变量的声明方式与Java中声明变量有很大的区别,而且必须使用var或val关键字。其中:var: 用此关键字声明的变量表示可变变量,即可读且可写。相当于Java中普通变量 val: 用此关键字声明的变量表示不可变变量,即可读且不可写。相当于Java中用f.

2020-11-11 15:13:46 334

原创 Android Kotlin开发之使用object和companion object

Java中修饰静态方法,使用关键字static,例如:class Util { public static String getCurrentVersion() { return BuildConfig.VERSION_NAME; }}调用:Stringversion_name = Util.getCurrentVersion();Kotlin语言中使用"object"修饰静态类,被修饰的类,可以使用类名.方法名的形式调用,如下:object Ut.

2020-11-11 09:36:53 2602

原创 Android Kotlin开发之 协程

Android 上的 Kotlin 协程目录 功能 示例概览 依赖项信息 在后台线程中执行 使用协程确保主线程安全 处理异常 其他协程资源 协程是一种并发设计模式,您可以在 Android 平台上使用它来简化异步执行的代码。协程是在版本 1.3 中添加到 Kotlin 的,它基于来自其他语言的既定概念。在 Android 上,协程有助于管理长时间运行的任务,如果管理不当,这些任务可能会阻塞主线程并导致应用无响应。使用协程的专业开发者中有超过 50% 的人反映使用协程提高了工作效率.

2020-11-03 14:49:57 435

原创 Android Kotlin开发之Android KTX

Android KTX |Android Jetpack 的一部分。Android KTX 是包含在 Android Jetpack 及其他 Android 库中的一组 Kotlin 扩展程序。KTX 扩展程序可以为 Jetpack、Android 平台及其他 API 提供简洁的惯用 Kotlin 代码。为此,这些扩展程序利用了多种 Kotlin 语言功能,其中包括:扩展函数 扩展属性 Lambda 命名参数 参数默认值 协程例如,使用 SharedPreferences 时,您必须先创

2020-11-03 14:07:16 3243 2

原创 在Android开发中采用Kotlin

在 2019 年 Google I/O 大会上,谷歌宣布今后将越来越优先采用 Kotlin 进行 Android 开发。Kotlin 是一种富有表现力且简洁的编程语言,不仅可以减少常见代码错误,还可以轻松集成到现有应用中。如果您想构建 Android 应用,建议您从 Kotlin 开始着手,充分利用一流的 Kotlin 功能。为什么要优先使用 Kotlin 进行 Android 开发?下面介绍了开发者喜欢用 Kotlin 编写代码的原因:富有表现力且简洁:您可以使用更少的代码实现更多的功能。

2020-11-02 15:31:36 706 1

原创 PreferenceFragment的使用

PreferenceFragment简介在我们写一个项目的时候,基本都有选项设置界面,这类设置界面的原理基本都是本地的一些个性化设置,通过读取本地设置来改变某些差异显示(例如字体大小,主题颜色,WIFI自动下载等)。这些设置一般都会使用Preference来保存,Android专门为这种Activity提供了便捷的基类PreferenceActivity(如果是Fragment,使用PreferenceFragment,现在推荐使用v7包下的PreferenceFragmentCompat),这些类内

2020-10-09 14:09:46 761

原创 Android 11 正式发布 | 开发者们的舞台已就绪

Android 11 来了! Android 11 ,重点关注了三个主题:以人为本的沟通方式、让用户快速访问和灵活控制所有智能设备,以及让用户有更多方式控制设备上的数据如何共享的隐私安全。请阅读我们的官方博客了解详情。 Android 开源项目 https://source.android.google.cn/ Android 11 官方博客 http://blog.google/products/android/android-11 对于开发者来说,An...

2020-09-10 10:04:52 310

转载 win10下Miracast无线投屏使用教程及异常解决方案(超详细)

文章目录 一、什么是Miracast? 二、主流的无线投屏技术有哪些特点? 三、如何查看自己的win10电脑是否支持Miracast无线投屏功能? 四、win10电脑如何使用Miracast无线投屏功能?(附窗口化投屏方案) 五、手机投屏win10电脑失败的异常解决方案 六、电脑不支持Miracast如何实现多屏互动? 博主将针对大家遇到的问题,不定时更新原有的异常解决方案:1.查看手机和电脑是否连接了同一WiFi,注意WiFi的频率要一致。2.查看电脑是否设置了接.

2020-08-13 10:32:57 25631 1

原创 Android Jetpack使用入门

Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。Jetpack 包含与平台 API 解除捆绑的 androidx.* 软件包库。这意味着,它可以提供向后兼容性,且比 Android 平台的更新频率更高,以此确保您始终可以获取最新且最好的 Jetpack 组件版本。优点:加速开发 组件可以单独采用(不过这些组件是为协同工作而构建的),同时利用 Kotlin...

2020-08-06 16:52:23 638

原创 基于DLNA实现iOS、Android投屏

由于我司需求,需要在iOS和安卓客户端实现DLNA投屏和控制。经过一番折腾,决定由我来研究DLNA。说起来又兴奋又紧张,兴奋希望自己能够弄出来然后跟安卓组讲解原理,紧张是因为怕自己能力不足做不出来。DLNA网上的资料比较笼统不好入门,官方资料直接是每个1000多页的10几个PDF文档,根本无从下手。相关开源项目有名的有Platinum UPnP,但是由于它是基于C++实现的,相关文档并不全面。iOS相关开源项目都三四年没更新的,找来找去只好自己去啃自己去实现了。还好买到一本不错的书《智能家庭网络:技术、

2020-08-05 11:22:36 4498

原创 MQTT知识要点

一.MQTT介绍1.简介MQTT(message queuing telemetry transport)是IBM开发的即时通讯协议,是一种发布/订阅极其轻量级的消息传输协议,专门为网络受限设备、低宽带以及高延迟和不可靠的网络而设计的。由于以上轻量级的特点,是实现智能家居的首选传输协议,相比于XMPP,更加轻量级而且占用宽带低。MQTT官网:http://mqtt.org/MQTT介绍:http://www.ibm.comMQTT Android github:https://gith...

2020-07-21 10:21:24 721

转载 Jenkins详细教程

最近花了一段时间研究jenkins这个工具。所以写下这篇文章,算是当做记录吧!一、jenkins是什么? Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、G...

2020-07-21 09:50:27 260

原创 Android开发之设计模式详解

设计模式六大原则在讲到常用的设计模式之前,首先介绍设计模式的六大原则,他们分别是单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则、迪米特原则和接口隔离原则。单一职责原则 定义:就一个类而言,应该仅有一个引起它变化的原因。 通俗地讲,就是我们不要让一个类承担过多的职责。开放封闭原则 定义:类、模块、函数等应该是可以拓展的,但是不可修改。 开放封闭有两个含义:一个是对于拓展是开放的,另一个是对于修改是封闭的。里式替换原则 定义:所有引用基类(父类)的地方必须能透明...

2020-07-08 17:16:26 307

原创 JAVA学习之多线程

进程是程序的一次动态执行过程,它需要经历从代码加载、代码执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到消亡的过程。多进程的操作系统能同时运行多个进程(程序),由于CPU具备分时机制,所以每个进程都能循环获得自己的CPU时间片。由于CPU执行速度非常快,使得所有程序好像是在“同时”运行一样。多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。线程是比进程更小的执行单,线程在进程的基础之上进行的进一步划分。所谓的多线程是指一个进程在执行过程中可以产生多个更小的程

2020-07-07 22:06:42 130

原创 JAVA学习之JAVA基础知识点

JAVA实战开发经典已经看了好多遍,时间久了很快一本书就返完了,基础的已经了然于胸,但仍然有一些重点知识点在这里做笔记,强调一下!一、switch语句在Java中switch后的表达式的类型只能为以下几种:byte 、short、char、int; JDK1.5之后,也支持枚举类; JDK1.7后支持了对String的判断。注意:long不能作为switch的参数。二、逻辑运算符,为什么会有两种与和或的操作?与分为短路与“&&”和非短路与“&”,或..

2020-07-04 17:58:54 258

原创 shell中vi的基本操作及Xshell 常用命令

vi 是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件。vi的基本概念基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode),各模式的功能区分如下:1. Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。2. Insert mode:唯有在Insert mode下,才可做文字数

2020-06-03 10:28:17 2637

转载 Gitflow工作流程

在工作场合实施Git的时候,有很多种工作流程可供选择,此时反而会让你手足无措。本文罗列了企业团队最常用的一些git工作流程,包括Centralized Workflow、Feature Branch Workflow、Gitflow Workflow、Forking Workflow。愿以此文抛砖引玉。在你开始阅读之前,请记住:这些流程应被视作为指导方针,而非“铁律”。我们只是想告诉你可能的做法。因此,如果有必要的话,你可以组合使用不同的流程。(本文主要介绍Gitflow Workflow……)

2020-05-26 10:44:26 236

原创 SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤

应用场景: 优异的跨平台支持,对windows平台支持非常友好。 简单易用,安装后稍微培训下就知道怎么操作。 代码,需求,文档,涉及稿都可以用svn进行管理,适合不同部门的技术非技术的同事协作。 当研发成本比较低,协作开发人数不多,开发人员对于版本管理的水平参差不齐的时候,或者对于代码的安全性要求更高一点的时候,适合用svnSVN仓库目录结构Repository: trunk tags branchestrunk(主干|主线) bra...

2020-05-26 10:21:49 1453

原创 Android JNI开发入门与实战

简介:涉及到一些算法或者底层驱动的时候,往往需要使用jni来开发。现在官方推荐使用CMake工具来开发jni。使用CMake开发Jni其实挺简单的,要求不高的话只需要简单配置一下就可以使用了。配置环境使用CMake进行Jni开发需要使用CMake插件、LLDB插件、NDK插件,这些都可以通过Android Studio很快地安装。打开SDK Manager,找到Android SDK->SDK Tool选项,安装CMake、LLDB、NDK插件。创建支持C++代码的工程默

2020-05-14 11:49:57 535

原创 Gradle高級配置

一、Android Studio的两种模式及签名配置debug模式debug模式使用一个默认的debug.keystore进行签名。这个默认签名(keystore)是不需要密码的,它的默认位置在C:\Users\<用户名>\.Android\debug.keystore,如果不存在Android studio会自动创建它。例如我的debug.keystore就在C:\U...

2020-03-28 20:43:11 436

原创 关于android:sharedUserId=“android.uid.system“ 的使用

有时候我们需要在自己的应用中使用一些系统相关权限,比如USB权限,如果我们自己的应用所在进程和系统进程为同一个UID,就会默认拥有该权限,不需要用户自己去授予,很多情况下会方便很多。最近在做的项目,有好大一部分都用到这个权限,修改系统时间啊,调用隐藏方法啊,系统关机重启啊,静默安装升级卸载应用等等,刚开始的时候,直接添加权限,运行就报错,无论模拟器还是真机,在logcat中总会得到"Unable ...

2020-03-16 16:40:38 32514 5

原创 Android实现在webview中长按图片弹出菜单保存图片

Android实现在webview中长按图片弹出菜单保存图片在项目中遇到一个保存webview中二维码图片的问题,做个笔记。效果如图: 用到webview的三个方法:getHitTestResult()——Gets a HitTestResult based on the current cursor node getType()——Gets the type of the hit ...

2020-03-03 21:33:54 2002

原创 Android 10 中的隐私权及变更

Android 10 引入了大量变更(如改进了系统界面、让权限授予更加严格以及对应用能够使用哪些数据实施了限制),目的是保护隐私权并赋予用户控制权。所有开发者都应查看隐私功能并测试他们的应用。具体影响可能会因每个应用的核心功能、定位和其他因素而异。重大隐私权变更 隐私权变更 受影响的应用 缓解策略 分区存储 针对外部存储的过滤视图,可提供对特定于...

2020-02-09 14:00:03 1050

云透传Demo

有人云透传DEMO,可以直接使用,根据测试账号订阅发布相关信息

2018-08-22

Mavlink协议通信服务

支持Mavlink的通信服务,内含Mavlink Java包,可以直接使用~

2018-08-22

安卓上传图片

安卓平台实现图片选择以及上传图片到服务器上,功能简单实用。

2012-09-25

文件管理器

安卓文件管理器,功能强大,是学习的好模版,和大家分享一下,对安卓学习来说很有意义。

2012-09-25

空空如也

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

TA关注的人

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