自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

strugglelin'blog

既然选择远方,便只顾风雨兼程。。。

  • 博客(116)
  • 收藏
  • 关注

原创 android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open

文章目录异常信息解决方案异常信息使用百度地图定位报以下信息android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database解决方案动态获取外部存储写入数据权限(WRITE_EXTERNAL_STORAGE)...

2022-03-30 16:41:37 3726

原创 没有找到类 android.view.View$OnUnhandledKeyEventListener

文章目录异常信息解决方案异常信息没有找到类 android.view.View$OnUnhandledKeyEventListenerRejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledK

2022-01-14 11:48:45 1398

原创 Android 代码开源到 JitPack

文章目录1. 写开源库代码(如:Android Library 模块)2. 上传开源库到远程版本控制仓库 Github3. Github 上创建一个新的 release 版本4. 上传版本到 JitPack1. 写开源库代码(如:Android Library 模块)2. 上传开源库到远程版本控制仓库 Github3. Github 上创建一个新的 release 版本1.点击 Release->Draft a new release2.创建一个 release 版本。如:点击如下

2021-12-30 10:36:49 213

原创 百度地图定位SDK:SHA 值获取

Androidstudio 查看 SHA 值1、Gradle->双击 signingReport2、Run 功能查看 SHA1 值

2021-12-09 10:15:32 148

原创 Android 代码开源流程

文章目录0. 代码开源流程1. 写开源库代码(如:Android Library 模块)2. 上传开源库到远程版本控制仓库 Github3. 上传开源库至远程文件服务器(如:JCenter)1. 代码引用zip文件2. 代码引用方式3. JCenter 简介4. 上传开源库至远程文件服务器 JCenter5. 开源库版本更新6. 开源库使用测试4. Github 添加说明文档5. Github 添...

2021-04-30 22:42:27 523 2

原创 Android 10 适配

文章目录一、Android 10.0 分区存储二、其他适配Android 10.0 适配:targetSdkVersion = 29一、Android 10.0 分区存储1、问题:保存文件到外部存储2、原因:外部存储分类:应用专属目录、公共媒体目录(需使用 MediaStore)、外部其他目录(需使用 SAF(存储访问框架–Storage Access Framework))3、解决方案:不启用分区存储 <application // 不启用分区存储 android:

2021-03-21 00:29:03 160

原创 Android 性能优化:布局优化

文章目录1、优化原因2、优化方案3、布局调优工具1、优化原因优化原因:影响页面的测量和绘制时间,从而影响页面的显示速度。2、优化方案1、选择消耗性能低的布局。2、减少布局层级。3、布局复用。4、减少测量绘制时间。选择消耗性能少的布局。1、性能消耗低:FrameLayout、LinearLayout、ConstraintLayout2、性能消耗高:RelativeLayou...

2020-07-31 22:46:24 212

原创 AndroidX 迁移

文章目录1.概述2.迁移前准备3.迁移步骤1.项目版本更新到282.引入 AndroidX3.启用 Jetifier4.更新依赖关系5.更新原始码6.ProGuard 和构建脚本7.获取最新的稳定版本1.概述AndroidX 将原始支持库 API 替换为 androidx 命名空间中的软件包。只有软件包和 Maven 工件名称发生了变化;类、方法和字段名称没有变化。2.迁移前准备备份项目。创建新分支,进行迁移。3.迁移步骤1.项目版本更新到281.gradle 版本更新为 3.2.0 及

2020-06-16 08:48:07 321 1

原创 Android 性能优化:内存优化

文章目录1、内存泄漏2、Bitmap 优化3、内存抖动4、代码质量、数量优化1、内存泄漏2、Bitmap 优化3、内存抖动定义:内存大小不断浮动的现象。原因:程序频繁分配内存,垃圾收集器频繁回收内存。大量、临时的小对象频繁创建。后果:产生大量内存碎片,容易导致内存溢出 (OOM)。优化方案:避免频繁创建大量、临时的小对象。4、代码质量、数量优化优化方向优化方案...

2020-05-15 13:24:15 271 1

原创 Android 性能优化:Bitmap 优化

文章目录1、优化原因2、优化方案1、优化原因Bitmap 消耗内存,内存占用过多容易发生 OOM。2、优化方案1、使用完释放图片资源。2、根据图片的质量压缩。3、根据图片的尺寸压缩。4、设置图片缓存。使用完释放图片资源。1.释放图片资源 + 软引用(SoftReference)。 private Bitmap mBitmap; private SoftRe...

2020-04-17 22:19:17 304

原创 Android 性能优化:内存泄漏

文章目录1、定义2、影响3、原因4、Android 内存管理机制5、常见内存泄漏原因及解决方案5、辅助分析内存泄漏1、定义定义:内存不在使用,无法归还给应用程序的现象。2、影响影响:容易使应用程序发生内存溢出(Out Of Memory )。OOM(定义:应用程序所需内存 大于 安卓系统分配的内存);安卓系统为每个应用程序分配的内存有限,内存溢出容易导致应用程序崩溃。3、原因...

2020-03-23 17:14:07 219

原创 Android 事件分发机制

文章目录1、基础2、源码分析1、基础事件分发对象:点击事件(Touch 事件)。事件定义:触摸屏幕,将产生点击事件。Touch 事件的细节(触摸时间、位置等)被封装成 MotionEvent 对象。事件类型:事件类型具体动作MotionEvent.ACTION_DOWN按下MotionEvent.ACTION_UP抬起MotionEvent.ACT...

2020-02-27 15:56:21 208

原创 自定义 View:Draw 过程

1、作用作用:绘制 View。2、Draw 过程View 的绘制过程:draw()->drawBackground(绘制背景)->onDraw(绘制内容,重写)->dispatchDraw(绘制子view,空实现)->onDrawForeground(绘制装饰(滚动指示器、滚动条、前景等)) View.java public void draw(...

2020-02-17 10:07:14 209

原创 自定义 View:Layout 过程

1、作用作用:计算 View 的位置。2、Layout 过程View 的 Layout 过程:layout->onLayout(空实现)。ViewGroup 的 Layout 过程:

2020-01-20 16:59:26 168

原创 自定义 View:Measure 过程

文章目录1、作用2、关键类:LayoutParams2、关键类:MeasureSpecs3、Measure 过程1、作用作用:测量 View 的宽高。注意:有些情况需要多次测量,measure 过程得到的宽高可能不准确;onLayout 获取最终宽高。2、关键类:LayoutParams作用:指定视图宽高等布局参数。参数:layout_height = match_parent ...

2019-12-17 14:33:52 156

原创 自定义 View 基础

View 定义:显示在屏幕上的各种视图。View 分类:View(单一视图)、ViewGroup(视图组)。View 结构:树形结构,从根节点开始测量绘制(树形递归)。Android 坐标:坐标原点-左上角;正方向-向右向下。View 位置:Top,Left,Bottom,Right。位置获取:Viiew.getTop()…;MotionEvent:触摸点相对父容器坐标系位置-eve...

2019-12-11 09:52:17 191

原创 DecorView:创建与显示

文章目录1、DecorView 创建2、DecorView 显示1、DecorView 创建创建 PhoneWindow 对象。为 PhoneWindow 设置 WindowManager 对象。为 PhoneWindow 创建一个 DecorView 对象。为 DecorView 的 ContentView 设置 activity 中设置的布局文件。Activity.java ...

2019-12-05 15:42:48 364

原创 ViewRoot、DectorView、Window

1、ViewRoot定义:连接器,实现类 ViewRootImpl。作用:连接 WindowManager(实现类 WindowManagerImpl) 和 DecorView;完成 View 的绘制流程(measure/layout/draw)。2、DecorView定义:窗口顶层 View ,继承 FrameLayout。作用:显示 和 加载布局。3、Window定义:...

2019-11-27 15:13:16 397

原创 Java:大数值

BigInteger、BigDecimal:解决整数、浮点数精度不能满足要求的问题。具体使用public class BigDecimalUtil { /* Java 大数值:BigInteger、BigDecimal public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) ...

2019-11-15 17:08:16 184

原创 Kotlin:基本数据类型

文章目录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):Array2.数值1...

2019-10-22 15:20:58 167

原创 Android 混淆

混淆的好处1、增加反编译难度,移除无用资源,减少 apk 体积。

2019-10-14 10:04:09 263

原创 Android:MVC/MVP/MVVM 架构

文章目录0、需求1、不使用架构2、MVC 模型3、MVP 模型3、MVVM 模型0、需求1、用户输入账号名称->点击查询账户信息->展示查询成功失败结果。1、不使用架构1、activity_architecture.xml<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.Li...

2019-10-10 14:03:27 235

原创 Androidstudio:修改 Gradle 版本

1、查找 Gradle 版本2、Androidstudio 修改 Gradle 版本

2019-10-10 10:22:28 228

原创 Kotlin:基础语法

文章目录1.包声明2.函数定义3.常量与变量4.注释5.字符串模板6.NULL 检查机制7.类型检测及自动类型转换8.区间1.包声明1、文件开头声明,默认 default 包。如:package com.strugglelin.kotlin2、默认导入的包kotlin.*kotlin.annotation.*kotlin.collections.*kotlin.comparisons...

2019-09-26 10:24:02 130

原创 Kotlin:环境搭建

文章目录1.定义2.环境配置3.Androidstudio 创建新工程1.定义在 Java 虚拟机上运行的静态类型编程语言,在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。Kotlin 由 JetBrains 公司设计开发并开源。2.环境配置安装 Kotlin 插件3.Androidstudio 创建新工程如:...

2019-09-25 14:58:42 151

原创 Android 屏幕适配:基础知识

文章目录1、定义2、相关概念1、定义屏幕适配定义:在不同尺寸、分辨率的手机上具有相同的显示效果。2、相关概念1、屏幕尺寸含义:手机对角线的物理尺寸单位:英寸(inch),1 英寸 = 2.54 cm2、屏幕分辨率含义:手机横向、纵向的像素点总和。单位:px(pixel),1 px = 1 像素点。手机常见分辨率:320480,10801920。3、屏幕像素密度含义...

2019-09-20 10:16:39 218

原创 约束布局:ConstraintLayout

文章目录优点具体使用优点位置、大小更灵活,可以减少布局嵌套。具体使用ConstraintLayout 官方文档

2019-09-10 17:13:35 154

原创 Android 修改项目包名

文章目录1、修改 applicationId 实现 APP 不覆盖安装2、修改项目包名1、修改 applicationId 实现 APP 不覆盖安装问题:修改 applicationId 能实现 APP 不覆盖安装;支付、第三方推送等会不能使用,需要第 2 步。2、修改项目包名1、去掉 ComPact Middle Packages 前面的勾号。2、选择要修改的包名层级,如图操作 或者...

2019-09-09 11:04:19 189

原创 Java:ThreadLocal

文章目录1.定义2.作用3.具体使用4.源码解析1.定义定义:线程局部变量2.作用保存线程独享的资源。3.具体使用public class ThreadLocalDemo { public static void main(String[] args) { ThreadLocal<String> threadLocal = new...

2019-09-03 09:49:10 967

原创 Java:synchronized

文章目录1、定义2、作用3、特点4、原理4、具体使用1、定义Java 关键字2、作用同步方法/代码块,保证同一时刻只有 1 个线程执行。3、特点保证原子性:操作全部执行,或全部不执行。保证可见性:一个线程修改共享属性的值,其它线程能看到值的更改。JVM 内存空间:主存、工作内存。共享属性修改流程:主存读取,复制到工作内存,在工作内存修改,同步到主存。保证有序性:单线程和多...

2019-08-28 10:32:17 983 1

原创 ThreadPool:线程池

文章目录1、定义2、作用3、核心参数4、工作流程5、常用线程池6、具体使用1、定义缓存一定线程数量的区域。2、作用复用、管理线程,避免新建线程/销毁线程消耗CPU资源。3、核心参数参数作用corePoolSize(核心线程数)核心线程会一直存活maximumPoolSize(最大线程数)活动线程达到最大线程数,后续新任务会阻塞keepAliv...

2019-08-22 13:54:47 1282 1

原创 Android 9.0 适配

Android 8.0 适配:targetSdkVersion >= 28一、Android P 限制明文流量的网络请求1、问题not permitted by network security policy。2、原因:Android P 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉。3、解决方案:步骤 1:res/xml 文件夹新建 network_securi...

2019-08-14 16:05:12 819

原创 Android SDK 版本和 API Level 对照表

Android SDK 版本 和 API Level 对照表注:Androidstudio->Tools->SDK Manager 可以查看对应 SDK 版本和 API Level。NameAPI LevelAndroid 9.+(Q)29Android 9.0(Pie)28Android 8.1(Oreo)27Android 8.0(O...

2019-08-12 17:10:58 690

原创 IntnetService:源码分析

1、工作原理继承 Service + ServiceHandler + HandlerThread。1、源码分析public abstract class IntentService extends Service { private volatile Looper mServiceLooper; private volatile ServiceHandler mServ...

2019-08-08 13:52:56 189

原创 IntentService:使用方式

文章目录1、定义2、作用3、工作流程4、具体使用1、定义Android Service 的封装类。2、作用按顺序,在后台执行线程任务,执行完自动关闭服务。3、工作流程4、具体使用public class IntentServiceActivity extends AppCompatActivity { private LocalBroadcastManager m...

2019-08-05 11:29:13 212

原创 HandlerThread:源码分析

1、工作原理继承 Thread,可以创建一个带 Looper 对象的工作线程。封装 Handler,与其他线程进行通信。2、源码分析public class HandlerThread extends Thread { int mPriority; int mTid = -1; Looper mLooper; private @Nullable Hand...

2019-07-30 10:44:26 122

原创 HandlerThread:使用方式

1、定义轻量级异步类。2、作用继承 Thread + 封装 Handler,方便顺序执行耗时任务。3、具体使用创建 HandlerThread 管理耗时任务执行。创建 workHandler 执行具体耗时任务,绑定 HandlerThread 的 Looper 。创建 uiHandler 执行具体 UI 更新。workHandler 发送消息通知执行具体耗时任务。pu...

2019-07-24 10:09:39 181

原创 AsyncTask:源码分析

文章目录1、核心对象2、工作原理3、源码分析1、核心对象1.为 2 个线程池 + Handler。具体类类作用THREAD_POOL_EXECUTOR执行耗时任务线程池SERIAL_EXECUTOR执行并行任务线程池InternalHandler消息传递2、工作原理AsyncTask 初始化AsyncTask 执行3、源码分析...

2019-07-18 16:23:36 158

原创 AsyncTask:使用方式

文章目录1、定义2、作用3、优点4、具体使用5、注意点1、定义轻量级异步类。2、作用实现多线程安全,工作线程执行耗时操作,UI 线程更新 ui。3、优点方便实现多线程异步通信,相比(Thread + Handler)。采用线程池缓存复用线程,避免频繁创建销毁线程占用系统资源。4、具体使用public class AsyncTaskActivity extends Ap...

2019-07-15 16:58:02 145

原创 Handler:内存泄漏

1、内存泄漏定义:本该回收的对象不能被回收,能然停留在内存中。2、内存泄漏本质:持有引用对象的生命周期大于改引用对象的生命周期。如:一个对象不再使用,另一对象能持有改对象的引用,导致该对象不能被回收。...

2019-07-09 10:12:34 147

空空如也

空空如也

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

TA关注的人

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