自定义博客皮肤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的学习中,不断努力,在安卓开发上取得进步!

  • 博客(754)
  • 资源 (4)
  • 论坛 (1)
  • 收藏
  • 关注

原创 JetPack之ViewModel

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

2021-01-26 16:04:20 6

原创 JetPack之使用LiveData

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

2021-01-26 09:22:22 13

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

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

2021-01-25 14:39:38 13

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

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

2021-01-22 14:47:22 31

原创 Android Kotlin开发之类详解

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

2020-11-11 17:14:05 60

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

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

2020-11-11 15:13:46 36

原创 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 151

原创 Android Kotlin开发之 协程

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

2020-11-03 14:49:57 54

原创 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 182 1

原创 在Android开发中采用Kotlin

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

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

原创 PreferenceFragment的使用

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

2020-10-09 14:09:46 86

原创 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 118

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

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

2020-08-13 10:32:57 2245

原创 Android Jetpack使用入门

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

2020-08-06 16:52:23 153

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

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

2020-08-05 11:22:36 442

原创 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 135

转载 Jenkins详细教程

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

2020-07-21 09:50:27 84

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

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

2020-07-08 17:16:26 103

原创 JAVA学习之多线程

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

2020-07-07 22:06:42 56

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

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

2020-07-04 17:58:54 135

原创 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 372

转载 Gitflow工作流程

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

2020-05-26 10:44:26 82

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

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

2020-05-26 10:21:49 148

原创 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 169

原创 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 214

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

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

2020-03-16 16:40:38 3630

原创 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 281

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

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

2020-02-09 14:00:03 496

原创 面向开发者的 Android 10 —— Android 10 亮点

2020年已来,虽然2020的开头有些艰难,我们相信国家一定能战胜疫情,战胜困难,中国一定行,中国人民一定能!中国加油!武汉加油!今年Android 10将会普及使用,这就给开发者提出了新的适配要求,更好的了解Android 10的特性和优点,了解更新中对开发适配的需求,已迫在眉睫!Android 10 围绕三个重要主题构建而成。首先,Android 10 以其先进的机器学习和对新兴设备(...

2020-02-02 10:36:19 435

原创 java.net.UnknownServiceException: CLEARTEXT communication to xxxxx not permitted by network

前言:为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android No...

2019-10-21 14:28:47 335

原创 Android Studio 3.x gradle依赖方式(implementation、api、provided 等)的区别

Android Studio 3.0 开始废弃(obsolete)了很多原有的指令,并使用新的指令来代替它们。目的是为了加快编译构建的速度。区别compile & api、implementationapi 指令完全等同于compile指令,没区别,你将所有的compile改成api,完全没有错。implementation指令implementation 与a...

2019-10-16 10:25:38 462

原创 解决WebView CanGoBack 返回上一层失效的问题

之前通过判断CanGoBack来知晓是不是有二级页面,网页返回,不然关闭整个activity,但最近出现一个网页点返回后一次处在二级页面无法返回。经过查找发现:Android 8.0开始WebView的shouldOverrideUrlLoading(WebView view, String url)返回值是false才会自动重定向,并且无需调用loadUrl,与8.0之前的效果刚好相反。...

2019-09-26 12:51:43 1672

原创 适配解决Android 8.0和9.0无法获取SSID (unknow ssid)

最近遇到一个奇怪的bug,部分手机上获取wifi的名字,通过WifiManager.getConnectionInfo().getSSID()为"unknown ssid",调试查看SSID为"",这导致接下来的一系列逻辑都出现了问题。目前发现RROS(Remix)的ROM会出现这个问题。特此记录解决方法。首先实例化WifiManager和ConnectivityManagermWifiMa...

2019-09-26 12:43:34 4105 1

原创 APK瘦身攻略

为什么apk越来越大?1.项目不断发展,功能越多,代码量增加的同时,资源文件也在不断的增多。2.app支持的主流dpi越来越多,如ldpi、mdpi、hdpi、xh xxh xxxh等等,间接导致资源增多。3.引入的第三方sdk或开源库越来越多,增加了很多重复的资源或方法以及无效代码。4.用于体验要求高,图片资源为保证清晰度会使用分辨率更高的图片。5.版本不断迭代,无效代码和图...

2019-07-13 18:39:52 128

原创 Flutter问题解决之 Waiting for another flutter command to release the startup lock.

前段时间系统重装了一次之后,执行Flutter的Packages get一直卡在这里,再执行一次报这个问题Waiting for another flutter command to release the startup lock.查看了一下资料,找到了以下方法:1:关闭 as2:CTRL+ALT+DEL 关闭所有 dart进程和android进程,注意adb这个别忘了关3:打开 f...

2019-06-15 16:23:50 2682

转载 Flutter混编:在Android原生中混编Flutter

目前《闲鱼》客户端已经在商品详情页使用纯Flutter编写了,单页面纯Flutter写是没有问题的,在这里顺便提一下怎么简单辨认一个页面是Flutter还是原生(不严谨,在你知道它是有Flutter的情况下,因为RN也会这样的):打开手机的“开发者模式” 打开“显示布局边界” 切回APP以《闲鱼》商品列表页和商品详情页为例:商品列表页和商品详情页接下来我们打开布局边界显示,可...

2019-06-02 11:14:11 3887 5

转载 已开源|码上用它开始Flutter混合开发——FlutterBoost

开源地址:https://github.com/alibaba/flutter_boost为什么要混合方案具有一定规模的App通常有一套成熟通用的基础库,尤其是阿里系App,一般需要依赖很多体系内的基础库。那么使用Flutter重新从头开发App的成本和风险都较高。所以在Native App进行渐进式迁移是Flutter技术在现有Native App进行应用的稳健型方式。闲鱼在...

2019-05-23 09:32:05 184

原创 2019Google I/O开发者大会:Pixel 3a、Nest Hub Max,以及 AI 让生活更美好!

看完这届谷歌 I/O 大会,我要换安卓!Jeff Dean:AI是一切动力:https://baijiahao.baidu.com/s?id=1632926599024457083&wfr=spider&for=pc2019 Google I/O都有什么? 看这篇文章就懂了:http://tech.ifeng.com/a/20190508/45566795_0.s...

2019-05-08 21:23:13 494

原创 Flutter系列四——Dart语言简介

重要的概念在学习Dart语言时,请记住以下事实和概念:在变量中可以放置的所有东西都是对象,而每个对象都是类的实例。无论数字、函数和null都是对象。所有对象都继承自[Object]类。 尽管Dart是强类型的,但类型声明是可选的,因为Dart可以推断类型。 如果要明确说明不需要任何类型,请使用[特殊类型dynamic]。 Dart支持通用类型,如List<int>(整数列表...

2019-04-29 17:09:28 116

转载 Flutter系列三——Flutter简介

初识FlutterFlutter简介Flutter 是 Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOS 和 Android平台。 Flutter提供了丰富的组件、接口,开发者可以很快地为 Flutter添加 native扩展。同时 Flutter还使用 Native引擎渲染视图,这无疑能为用户提供良...

2019-04-29 15:30:25 237

安卓上传图片

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

2012-09-25

文件管理器

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

2012-09-25

云透传Demo

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

2018-08-22

Mavlink协议通信服务

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

2018-08-22

myboyer的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

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

TA关注的人 TA的粉丝

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