<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[strugglelin'blog]]></title><description><![CDATA[既然选择远方，便只顾风雨兼程。。。]]></description><link>https://blog.csdn.net/BlueSky003</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; BlueSky003]]></copyright><item><title><![CDATA[android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open]]></title><link>https://blog.csdn.net/BlueSky003/article/details/123850141</link><guid>https://blog.csdn.net/BlueSky003/article/details/123850141</guid><author>BlueSky003</author><pubDate>Wed, 30 Mar 2022 16:41:37 +0800</pubDate><description><![CDATA[文章目录异常信息解决方案
异常信息
使用百度地图定位报以下信息
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database

解决方案
动态获取外部存储写入数据权限（WRITE_EXTERNAL_STORAGE）

...]]></description><category></category></item><item><title><![CDATA[没有找到类 android.view.View$OnUnhandledKeyEventListener]]></title><link>https://blog.csdn.net/BlueSky003/article/details/122490699</link><guid>https://blog.csdn.net/BlueSky003/article/details/122490699</guid><author>BlueSky003</author><pubDate>Fri, 14 Jan 2022 11:48:45 +0800</pubDate><description><![CDATA[文章目录异常信息解决方案
异常信息
没有找到类 android.view.View$OnUnhandledKeyEventListener
Rejecting re-init on previously-failed class java.lang.Class&lt;androidx.core.view.ViewCompat$2&gt;: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledK]]></description><category></category></item><item><title><![CDATA[Android 代码开源到 JitPack]]></title><link>https://blog.csdn.net/BlueSky003/article/details/120233362</link><guid>https://blog.csdn.net/BlueSky003/article/details/120233362</guid><author>BlueSky003</author><pubDate>Thu, 30 Dec 2021 10:36:49 +0800</pubDate><description><![CDATA[文章目录1. 写开源库代码（如：Android Library 模块）2. 上传开源库到远程版本控制仓库 Github3.  Github 上创建一个新的 release 版本4.  上传版本到 JitPack
1. 写开源库代码（如：Android Library 模块）
2. 上传开源库到远程版本控制仓库 Github
3.  Github 上创建一个新的 release 版本
1.点击 Release-&gt;Draft a new release


2.创建一个 release 版本。如：点击如下]]></description><category></category></item><item><title><![CDATA[百度地图定位SDK：SHA 值获取]]></title><link>https://blog.csdn.net/BlueSky003/article/details/121807382</link><guid>https://blog.csdn.net/BlueSky003/article/details/121807382</guid><author>BlueSky003</author><pubDate>Thu, 09 Dec 2021 10:15:32 +0800</pubDate><description><![CDATA[Androidstudio 查看 SHA 值
1、Gradle-&gt;双击 signingReport
2、Run 功能查看 SHA1 值



]]></description><category></category></item><item><title><![CDATA[Android 代码开源流程]]></title><link>https://blog.csdn.net/BlueSky003/article/details/97892191</link><guid>https://blog.csdn.net/BlueSky003/article/details/97892191</guid><author>BlueSky003</author><pubDate>Fri, 30 Apr 2021 22:42:27 +0800</pubDate><description><![CDATA[文章目录0. 代码开源流程1. 写开源库代码（如：Android Library 模块）2. 上传开源库到远程版本控制仓库 Github3. 上传开源库至远程文件服务器（如：JCenter）1. 代码引用zip文件2. 代码引用方式3. JCenter 简介4. 上传开源库至远程文件服务器 JCenter5. 开源库版本更新6. 开源库使用测试4. Github 添加说明文档5. Github 添...]]></description><category></category></item><item><title><![CDATA[Android 10 适配]]></title><link>https://blog.csdn.net/BlueSky003/article/details/114817203</link><guid>https://blog.csdn.net/BlueSky003/article/details/114817203</guid><author>BlueSky003</author><pubDate>Sun, 21 Mar 2021 00:29:03 +0800</pubDate><description><![CDATA[文章目录一、Android 10.0 分区存储二、其他适配
Android 10.0 适配：targetSdkVersion = 29
一、Android 10.0 分区存储
1、问题：保存文件到外部存储
2、原因：外部存储分类：应用专属目录、公共媒体目录（需使用 MediaStore）、外部其他目录（需使用 SAF（存储访问框架–Storage Access Framework））
3、解决方案：不启用分区存储
 &lt;application
 		// 不启用分区存储
        android:]]></description><category></category></item><item><title><![CDATA[Android 性能优化：布局优化]]></title><link>https://blog.csdn.net/BlueSky003/article/details/97242258</link><guid>https://blog.csdn.net/BlueSky003/article/details/97242258</guid><author>BlueSky003</author><pubDate>Fri, 31 Jul 2020 22:46:24 +0800</pubDate><description><![CDATA[文章目录1、优化原因2、优化方案3、布局调优工具
1、优化原因

优化原因：影响页面的测量和绘制时间，从而影响页面的显示速度。

2、优化方案
1、选择消耗性能低的布局。
2、减少布局层级。
3、布局复用。
4、减少测量绘制时间。

选择消耗性能少的布局。
1、性能消耗低：FrameLayout、LinearLayout、ConstraintLayout
2、性能消耗高：RelativeLayou...]]></description><category></category></item><item><title><![CDATA[AndroidX 迁移]]></title><link>https://blog.csdn.net/BlueSky003/article/details/106778470</link><guid>https://blog.csdn.net/BlueSky003/article/details/106778470</guid><author>BlueSky003</author><pubDate>Tue, 16 Jun 2020 08:48:07 +0800</pubDate><description><![CDATA[文章目录1.概述2.迁移前准备3.迁移步骤1.项目版本更新到282.引入 AndroidX3.启用 Jetifier4.更新依赖关系5.更新原始码6.ProGuard 和构建脚本7.获取最新的稳定版本
1.概述
AndroidX 将原始支持库 API 替换为 androidx 命名空间中的软件包。只有软件包和 Maven 工件名称发生了变化；类、方法和字段名称没有变化。
2.迁移前准备

备份项目。
创建新分支，进行迁移。

3.迁移步骤
1.项目版本更新到28
1.gradle 版本更新为 3.2.0 及]]></description><category></category></item><item><title><![CDATA[Android 性能优化：内存优化]]></title><link>https://blog.csdn.net/BlueSky003/article/details/97108714</link><guid>https://blog.csdn.net/BlueSky003/article/details/97108714</guid><author>BlueSky003</author><pubDate>Fri, 15 May 2020 13:24:15 +0800</pubDate><description><![CDATA[文章目录1、内存泄漏2、Bitmap 优化3、内存抖动4、代码质量、数量优化
1、内存泄漏
2、Bitmap 优化
3、内存抖动

定义：内存大小不断浮动的现象。
原因：程序频繁分配内存，垃圾收集器频繁回收内存。大量、临时的小对象频繁创建。
后果：产生大量内存碎片，容易导致内存溢出 (OOM)。
优化方案：避免频繁创建大量、临时的小对象。

4、代码质量、数量优化




优化方向
优化方案


...]]></description><category></category></item><item><title><![CDATA[Android 性能优化：Bitmap 优化]]></title><link>https://blog.csdn.net/BlueSky003/article/details/96965976</link><guid>https://blog.csdn.net/BlueSky003/article/details/96965976</guid><author>BlueSky003</author><pubDate>Fri, 17 Apr 2020 22:19:17 +0800</pubDate><description><![CDATA[文章目录1、优化原因2、优化方案
1、优化原因

Bitmap 消耗内存，内存占用过多容易发生 OOM。

2、优化方案
1、使用完释放图片资源。
2、根据图片的质量压缩。
3、根据图片的尺寸压缩。
4、设置图片缓存。

使用完释放图片资源。
1.释放图片资源 + 软引用（SoftReference）。

    private Bitmap mBitmap;
    private SoftRe...]]></description><category></category></item><item><title><![CDATA[Android 性能优化：内存泄漏]]></title><link>https://blog.csdn.net/BlueSky003/article/details/96833397</link><guid>https://blog.csdn.net/BlueSky003/article/details/96833397</guid><author>BlueSky003</author><pubDate>Mon, 23 Mar 2020 17:14:07 +0800</pubDate><description><![CDATA[文章目录1、定义2、影响3、原因4、Android 内存管理机制5、常见内存泄漏原因及解决方案5、辅助分析内存泄漏
1、定义

定义：内存不在使用，无法归还给应用程序的现象。

2、影响

影响：容易使应用程序发生内存溢出(Out Of Memory )。OOM(定义：应用程序所需内存 大于 安卓系统分配的内存)；安卓系统为每个应用程序分配的内存有限，内存溢出容易导致应用程序崩溃。

3、原因

...]]></description><category></category></item><item><title><![CDATA[Android 事件分发机制]]></title><link>https://blog.csdn.net/BlueSky003/article/details/96305388</link><guid>https://blog.csdn.net/BlueSky003/article/details/96305388</guid><author>BlueSky003</author><pubDate>Thu, 27 Feb 2020 15:56:21 +0800</pubDate><description><![CDATA[文章目录1、基础2、源码分析
1、基础

事件分发对象：点击事件（Touch 事件）。
事件定义：触摸屏幕，将产生点击事件。Touch 事件的细节（触摸时间、位置等）被封装成 MotionEvent 对象。
事件类型：





事件类型
具体动作




MotionEvent.ACTION_DOWN
按下


MotionEvent.ACTION_UP
抬起


MotionEvent.ACT...]]></description><category></category></item><item><title><![CDATA[自定义 View：Draw 过程]]></title><link>https://blog.csdn.net/BlueSky003/article/details/96132940</link><guid>https://blog.csdn.net/BlueSky003/article/details/96132940</guid><author>BlueSky003</author><pubDate>Mon, 17 Feb 2020 10:07:14 +0800</pubDate><description><![CDATA[1、作用

作用：绘制 View。

2、Draw 过程

View 的绘制过程：draw()-&gt;drawBackground(绘制背景)-&gt;onDraw(绘制内容，重写)-&gt;dispatchDraw(绘制子view，空实现)-&gt;onDrawForeground(绘制装饰（滚动指示器、滚动条、前景等）)

	View.java
	
    public void draw(...]]></description><category></category></item><item><title><![CDATA[自定义 View：Layout 过程]]></title><link>https://blog.csdn.net/BlueSky003/article/details/95990042</link><guid>https://blog.csdn.net/BlueSky003/article/details/95990042</guid><author>BlueSky003</author><pubDate>Mon, 20 Jan 2020 16:59:26 +0800</pubDate><description><![CDATA[1、作用

作用：计算 View 的位置。

2、Layout 过程

View 的 Layout 过程：layout-&gt;onLayout(空实现)。
ViewGroup 的 Layout 过程：


]]></description><category></category></item><item><title><![CDATA[自定义 View：Measure 过程]]></title><link>https://blog.csdn.net/BlueSky003/article/details/95939373</link><guid>https://blog.csdn.net/BlueSky003/article/details/95939373</guid><author>BlueSky003</author><pubDate>Tue, 17 Dec 2019 14:33:52 +0800</pubDate><description><![CDATA[文章目录1、作用2、关键类：LayoutParams2、关键类：MeasureSpecs3、Measure 过程
1、作用

作用：测量 View 的宽高。
注意：有些情况需要多次测量，measure 过程得到的宽高可能不准确；onLayout 获取最终宽高。

2、关键类：LayoutParams

作用：指定视图宽高等布局参数。
参数：layout_height = match_parent ...]]></description><category></category></item><item><title><![CDATA[自定义 View 基础]]></title><link>https://blog.csdn.net/BlueSky003/article/details/95457309</link><guid>https://blog.csdn.net/BlueSky003/article/details/95457309</guid><author>BlueSky003</author><pubDate>Wed, 11 Dec 2019 09:52:17 +0800</pubDate><description><![CDATA[View 定义：显示在屏幕上的各种视图。
View 分类：View（单一视图）、ViewGroup（视图组）。
View 结构：树形结构，从根节点开始测量绘制（树形递归）。

Android 坐标：坐标原点-左上角；正方向-向右向下。
View 位置：Top，Left，Bottom，Right。
位置获取：Viiew.getTop()…；MotionEvent：触摸点相对父容器坐标系位置-eve...]]></description><category></category></item><item><title><![CDATA[DecorView：创建与显示]]></title><link>https://blog.csdn.net/BlueSky003/article/details/95320712</link><guid>https://blog.csdn.net/BlueSky003/article/details/95320712</guid><author>BlueSky003</author><pubDate>Thu, 05 Dec 2019 15:42:48 +0800</pubDate><description><![CDATA[文章目录1、DecorView 创建2、DecorView 显示
1、DecorView 创建

创建 PhoneWindow 对象。
为 PhoneWindow 设置 WindowManager 对象。
为 PhoneWindow 创建一个 DecorView 对象。
为 DecorView 的 ContentView 设置 activity 中设置的布局文件。

Activity.java
	...]]></description><category></category></item><item><title><![CDATA[ViewRoot、DectorView、Window]]></title><link>https://blog.csdn.net/BlueSky003/article/details/95200829</link><guid>https://blog.csdn.net/BlueSky003/article/details/95200829</guid><author>BlueSky003</author><pubDate>Wed, 27 Nov 2019 15:13:16 +0800</pubDate><description><![CDATA[1、ViewRoot

定义：连接器，实现类 ViewRootImpl。
作用：连接 WindowManager（实现类 WindowManagerImpl） 和 DecorView；完成 View 的绘制流程（measure/layout/draw）。

2、DecorView

定义：窗口顶层 View ，继承 FrameLayout。
作用：显示 和 加载布局。

3、Window

定义：...]]></description><category></category></item><item><title><![CDATA[Java：大数值]]></title><link>https://blog.csdn.net/BlueSky003/article/details/102705566</link><guid>https://blog.csdn.net/BlueSky003/article/details/102705566</guid><author>BlueSky003</author><pubDate>Fri, 15 Nov 2019 17:08:16 +0800</pubDate><description><![CDATA[BigInteger、BigDecimal：解决整数、浮点数精度不能满足要求的问题。
具体使用
public class BigDecimalUtil {

    /*
    Java 大数值：BigInteger、BigDecimal
    public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
 ...]]></description><category></category></item><item><title><![CDATA[Kotlin：基本数据类型]]></title><link>https://blog.csdn.net/BlueSky003/article/details/101513400</link><guid>https://blog.csdn.net/BlueSky003/article/details/101513400</guid><author>BlueSky003</author><pubDate>Tue, 22 Oct 2019 15:20:58 +0800</pubDate><description><![CDATA[文章目录1.数据类型2.数值3.类型转换4.位操作符5.字符6.布尔7.数组8.字符串9.字符串模板
1.数据类型
1、数值（Numbers）：Btye、Short、Int、Long、Float、Double。
2、字符（Characters）：Char。
3、字符串（Strings）：String。
4、布尔（Boolean）：boolean。
5、数组（Arrays）：Array
2.数值
1...]]></description><category></category></item></channel></rss>