<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ABded的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ABded</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ABded]]></copyright><item><title><![CDATA[Android进阶知识——Android性能优化]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/117672302</link><guid>https://blog.youkuaiyun.com/ABded/article/details/117672302</guid><author>ABded</author><pubDate>Wed, 09 Jun 2021 20:35:10 +0800</pubDate><description><![CDATA[文章目录1.Android的性能优化方法1.1布局优化1.2绘制优化1.3内存泄漏优化
通过本章的内容，我们可以掌握常见的性能优化方法，这将有助于提高Android程序的性能；另一方面，本章还将讲解Android程序的设计思想，这将有助于提高程序的可维护性和可扩展性。
Android设备作为一种移动设备，不管是内存还是CPU的性能都受到了一定的限制，无法做到像PC设备那样具有超大的内存和高性能的CPU。鉴于这一点，这也意味着Android程序不可能无限制地使用内存和CPU资源，过多地使用内存会导致程序内存泄]]></description><category></category></item><item><title><![CDATA[Android进阶知识——Android线程和线程池]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/117475609</link><guid>https://blog.youkuaiyun.com/ABded/article/details/117475609</guid><author>ABded</author><pubDate>Sun, 06 Jun 2021 17:10:01 +0800</pubDate><description><![CDATA[文章目录1.主线程和子线程2.Android中的线程形态
本章的主题是Android中的线程和线程池。线程在Android中是一个很重要的概念，从用途上来说，线程分为主线程和子线程，主线程主要处理和界面相关的事，而子线程则往往用于执行耗时操作。除了Thread本身以外，在Android中可以扮演线程角色的还有很多，比如AsyncTask和IntentService，同时HandlerThread也是一种特殊的线程。尽管AsyncTask、IntentService以及HandlerThread的表现形式都有]]></description><category></category></item><item><title><![CDATA[Android进阶知识——Android的消息机制]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/117372717</link><guid>https://blog.youkuaiyun.com/ABded/article/details/117372717</guid><author>ABded</author><pubDate>Tue, 01 Jun 2021 19:32:26 +0800</pubDate><description><![CDATA[文章目录
从开发的角度来说，Handler是Android消息机制的上层接口，这使得在开发过程中只需要和Handler交互即可。Handler的使用过程很简单，通过它可以轻松地将一个任务切换到Handler所在的线程中去执行。
Android的消息机制主要是指Handler的运行机制，Handler的运行需要底层的MessageQueue和Looper的支撑。MessageQueue的中文翻译是消息队列，它的内部存储了一组消息，以队列的形式对外提供插入和删除的工作。虽然叫消息队列，但是它的内部存储结构并不是]]></description><category></category></item><item><title><![CDATA[Android进阶知识——Android动画深入分析]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/116999361</link><guid>https://blog.youkuaiyun.com/ABded/article/details/116999361</guid><author>ABded</author><pubDate>Wed, 26 May 2021 18:16:04 +0800</pubDate><description><![CDATA[文章目录1.View动画1.1View动画的种类
Android动画可以分为三种：View动画、帧动画和属性动画，其实帧动画也属于View动画的一种，只不过它的平移、旋转等常见的View动画在表现形式上略有不同而已。View动画通过对场景里的对象不断做图像变换(平移、缩放、旋转、透明度)从而产生动画效果，它是一种渐进式动画，并且View动画支持自定义。帧动画通过顺序播放一系列图像从而产生动画效果，可以简单理解为图片切换动画，而如果图片过多过大就会导致OOM。属性动画通过动态地改变对象的属性从而达到动画效果。]]></description><category></category></item><item><title><![CDATA[Android进阶知识——View的工作原理]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/116606031</link><guid>https://blog.youkuaiyun.com/ABded/article/details/116606031</guid><author>ABded</author><pubDate>Sun, 16 May 2021 18:02:33 +0800</pubDate><description><![CDATA[文章目录1.初识ViewRoot和DecorView
本章我们主要介绍两个方面的内容，首先介绍View的工作原理，接着介绍自定义View的实现方式。
有的时候我们可能想要在界面上实现一些比较华丽的效果，而往往系统提供的现有控件并不能满足我们的需求，这个时候我们就需要使用自定义View了。为了更好地自定义View，还需要掌握View的底层工作原理，比如View的测量流程、布局流程以及绘制流程。除了View的三大流程以外，View常见的回调方法也是需要熟练掌握的，比如构造方法、onAttach、onVisibi]]></description><category></category></item><item><title><![CDATA[Android进阶知识——View的事件体系]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/116134640</link><guid>https://blog.youkuaiyun.com/ABded/article/details/116134640</guid><author>ABded</author><pubDate>Mon, 26 Apr 2021 20:50:44 +0800</pubDate><description><![CDATA[文章目录1.View的基础知识1.1什么是View1.2View的位置参数1.3MotionEvent和TouchSlop1.4VelocityTracker、GestureDetector和Scroller
本章我们将介绍Android中十分重要的一个概念：View，它的应用十分广泛。比如说自定义控件和解决滑动冲突等，因此学好Veiw的事件体系对于我们开发者而言是十分必要的。
1.View的基础知识
本节我们将主要介绍的内容有：View的位置参数、MotionEvent和TouchSlop对象、Veloc]]></description><category></category></item><item><title><![CDATA[Android进阶知识——Activity的生命周期和启动模式]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/115870858</link><guid>https://blog.youkuaiyun.com/ABded/article/details/115870858</guid><author>ABded</author><pubDate>Thu, 22 Apr 2021 18:56:14 +0800</pubDate><description><![CDATA[文章目录1.Activity的生命周期全面分析1.1典型情况下的生命周期分析1.2异常情况下的生命周期分析
Activity作为四大组件之首，是使用最为频繁的一种组件。而本节我们就来讲解一些Activity在使用过程中的一些不容易搞清楚的概念，主要包括生命周期和启动模式以及IntentFilter的匹配规则分析。
1.Activity的生命周期全面分析
首先Activity的生命周期分为典型情况下的生命周期以及异常情况下的生命周期两种。


典型情况下的生命周期：指在有用户参与的情况下，Activity所经]]></description><category></category></item><item><title><![CDATA[Kotlin实战——Kotlin基础]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/114548473</link><guid>https://blog.youkuaiyun.com/ABded/article/details/114548473</guid><author>ABded</author><pubDate>Sun, 14 Mar 2021 22:09:18 +0800</pubDate><description><![CDATA[文章目录1.基本要素：函数和变量1.1 函数1.2变量1.3更简单的字符串格式化：字符串模板2.类和属性2.1属性2.2自定义访问器3.表示和处理选择：枚举和“when”3.1声明枚举类3.2使用“when”处理枚举类3.3在“when”结构中使用任意对象
1.基本要素：函数和变量
1.1 函数
首先我们来定义一个无返回值的函数
fun main(args:Array&lt;String&gt;){
    println("Hello,world!")
}

接下来我们再来看看带返回值的函数是如何定义的
]]></description><category></category></item><item><title><![CDATA[Android基础知识——实现耗时进度圈效果]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/113090215</link><guid>https://blog.youkuaiyun.com/ABded/article/details/113090215</guid><author>ABded</author><pubDate>Sun, 24 Jan 2021 15:46:01 +0800</pubDate><description><![CDATA[在开发过程中我们可能会去实现一些比较耗时的网络请求功能，而为了填补网络请求的时间，一般我们都是要加上一个加载进度圈的效果用以过渡。
这篇文章我们就来介绍使用ProgressBar+AlertDialog来实现耗时进度圈的效果。
1.编写耗时对话框的背景shape文件progress_bg.xml
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;shape xmlns:android="http://schemas.android.com/apk/res/an]]></description><category></category></item><item><title><![CDATA[Android开发知识——开发中遇到的问题（2）]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/109695207</link><guid>https://blog.youkuaiyun.com/ABded/article/details/109695207</guid><author>ABded</author><pubDate>Sat, 23 Jan 2021 15:29:28 +0800</pubDate><description><![CDATA[文章目录前言1.ScrollView与ImageView共用导致出现大段空白2.透明化系统栏时遇到的问题3.百度地图定位不准确的问题4.改变Toolbar中title文字的位置
前言
以下内容为笔者在开发垃圾识别App时所遇到的实际问题及其解决方法，在此记录，与读者分享也供自己日后回顾。
1.ScrollView与ImageView共用导致出现大段空白
笔者在开发时，希望在一个界面下放入数目固定的几张图片供用户获取信息，并且由于图片较长所以采用ScrollView控件实现滑动。不过在实际开发时，却发现了滑动]]></description><category></category></item><item><title><![CDATA[Andorid基础知识——Retrofit的基本使用]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/109432692</link><guid>https://blog.youkuaiyun.com/ABded/article/details/109432692</guid><author>ABded</author><pubDate>Sun, 01 Nov 2020 18:52:28 +0800</pubDate><description><![CDATA[文章目录1.Retrofit是什么2.Retrofit的使用2.1添加依赖2.2创建接收服务器返回数据的类2.3创建用于描述网络请求的接口2.4创建Retrofit实例2.5创建网络请求接口实例2.6发送网络请求2.7处理返回数据
1.Retrofit是什么
Retrofit主要是对Android网络请求的框架进行封装，底层基于OkHttp。
换句话说，网络请求的本质还是OkHttp完成，而Retrofit仅负责网络请求接口的封装。
主要是使用Retrofit接口封装请求参数，header头部，Url信息等]]></description><category></category></item><item><title><![CDATA[Android基础知识——基于位置的服务]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/109230780</link><guid>https://blog.youkuaiyun.com/ABded/article/details/109230780</guid><author>ABded</author><pubDate>Fri, 23 Oct 2020 22:23:27 +0800</pubDate><description><![CDATA[文章目录1.基于位置的服务简介2.申请API Key3.使用百度定位。3.1准备LBS SDK
1.基于位置的服务简介
基于位置的服务所围绕的核心就是要先确定出用户所在的位置。通常有两种技术方式可以实现：一种是通过GPS定位，一种是通过网络定位。
GPS定位的工作原理是基于手机内置的GPS硬件直接和卫星交互来获取当前的经纬度信息，这种方式精确度非常高，但缺点是只能在室外使用，室内基本无法接收到卫星信号。网络定位的工作原理是根据手机当前网络附近的三个基站进行测速，以此计算出手机和每个基站之间的距离，再通过三角]]></description><category></category></item><item><title><![CDATA[Android开发知识——开发中遇到的问题（1）]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/109148100</link><guid>https://blog.youkuaiyun.com/ABded/article/details/109148100</guid><author>ABded</author><pubDate>Sun, 18 Oct 2020 19:52:43 +0800</pubDate><description><![CDATA[文章目录1.动态控制布局的位置2.单选按钮的使用3.仅在需要时才显示布局3.1控制布局的可见属性3.2ViewStub3.3以上两种方法的利弊4.判断ImageView展示的是哪一张图片5.单选框的使用6.RecyclerView实现侧滑删除7.在活动中处理RecyclerView的点击事件
1.动态控制布局的位置
在开发时，我们可能需要在同一活动中的不同界面下来改变布局的位置使得布局处于一个比较合理的位置。
例如：我们在活动的主界面希望用户能有沉浸式的体验，所以我们将我们的布局延伸到了系统栏中，可是当我们]]></description><category></category></item><item><title><![CDATA[数据结构（1）——链表的基本操作]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/108738896</link><guid>https://blog.youkuaiyun.com/ABded/article/details/108738896</guid><author>ABded</author><pubDate>Tue, 22 Sep 2020 23:16:24 +0800</pubDate><description><![CDATA[文章目录1.链表的基本概念2.创建链表2.1尾插法2.2头插法3.链表的遍历及其增删改查3.1链表的遍历3.2增加新节点3.3删除节点3.3.1按位删除节点3.3.2按数据删除节点3.4修改数据3.5查找数据4.链表的升序合并，冒泡排序，逆置4.1升序合并4.2冒泡排序4.3逆置
1.链表的基本概念

概念：链表是一种线性的数据结构，通过指针将零散的内存块连接起来，链表的没个内存块成为节点。
链表的实现方法：链表以结构体为节点（包含数据域和指针域），利用数据域来存储数据，然后将每个节点的指针域都指向下一个节]]></description><category></category></item><item><title><![CDATA[Android基础知识——你还应该掌握的高级技巧]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/108652434</link><guid>https://blog.youkuaiyun.com/ABded/article/details/108652434</guid><author>ABded</author><pubDate>Sun, 20 Sep 2020 02:19:24 +0800</pubDate><description><![CDATA[文章目录1.全局获得Context的技巧2.使用Intent传递对象2.1Serializable方式2.2Parcelable方式3.定制自己的日志工具
1.全局获得Context的技巧
在我们学习Android基础知识的时候，你会发现在很多地方我们都会使用到Context，弹出Toast的时候需要，启动活动的时候需要，发送广播的时候需要，操作数据库的时候需要，使用通知的时候需要，等等等等。所以有时候在需要使用Context时，却不知道该怎么获得Context将会是一件非常伤脑筋的事情。本节我们就来介绍一]]></description><category></category></item><item><title><![CDATA[Android基础知识——运用手机多媒体]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/108540060</link><guid>https://blog.youkuaiyun.com/ABded/article/details/108540060</guid><author>ABded</author><pubDate>Sun, 13 Sep 2020 17:44:19 +0800</pubDate><description><![CDATA[文章目录1.将程序运行到手机上2.使用通知2.1通知的基本用法
1.将程序运行到手机上
下面我们讲到的一些代码，可能只有把程序运行到真机上，才会看到效果，教程。
2.使用通知
通知是Android系统中比较有特色的一个功能，当某个应用程序希望向用户发出一些提示信息，而该应用程序又不在前台运行时，就可以借助通知来实现。
2.1通知的基本用法
使用步骤：

...]]></description><category></category></item><item><title><![CDATA[Android基础知识——Material Design实战]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/108554840</link><guid>https://blog.youkuaiyun.com/ABded/article/details/108554840</guid><author>ABded</author><pubDate>Sun, 13 Sep 2020 17:43:54 +0800</pubDate><description><![CDATA[文章目录1.什么是Material Design2.Toolbar3.滑动菜单3.1DrawerLayout3.2NavigationView
1.什么是Material Design
Material Design是由谷歌的设计工程师们基于传统的优秀设计原则，结合丰富的创意和科学技术所发明的一套全新的界面设计语言，包含了视觉，运动，互动效果等特性。而事实上，Material Design更像是一种设计思想和理念，而本节我们并不是要以设计师的角度去学习Material Design，而是以一个开发者的角度去]]></description><category></category></item><item><title><![CDATA[Android基础知识——探究服务]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/108396532</link><guid>https://blog.youkuaiyun.com/ABded/article/details/108396532</guid><author>ABded</author><pubDate>Sat, 05 Sep 2020 16:13:50 +0800</pubDate><description><![CDATA[文章目录1.服务是什么2.Android多线程编程2.1线程的基本用法2.2在子线程中更改UI2.3解析异步处理机制2.4使用AsyncTask
1.服务是什么
服务是Android中实现程序后台运行的解决方案，它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务。
服务并不是运行在一个独立的进程当中的，而是依赖于创建服务时所在的应用程序进程。
服务并不会自动开启线程，所有代码默认运行在主线程中。
2.Android多线程编程
当我们执行一些耗时操作，如发起一条网络请求时，考虑到网速等其他原因，服务]]></description><category></category></item><item><title><![CDATA[Android基础知识——使用网络技术]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/108354345</link><guid>https://blog.youkuaiyun.com/ABded/article/details/108354345</guid><author>ABded</author><pubDate>Sat, 05 Sep 2020 16:13:40 +0800</pubDate><description><![CDATA[文章目录1.WebView的用法2.使用HTTP协议访问网络2.1使用HttpURLConnection2.2使用OkHttp3.解析XML格式数据3.1Pull解析方式3.2SAX解析方式4.解析JSON数据4.1使用JSONObiect4.2使用GSON5.网络编程的最佳实践5.1HttpURLConnection5.2OkHttp
1.WebView的用法
有时候我么可能会遇到一些比较特殊的需求，比如说要在应用程序里展示一些网页，但又明确指出不允许打开系统的浏览器。这个时候我们就可以利用WebView]]></description><category></category></item><item><title><![CDATA[Android基础知识——探究内容提供器]]></title><link>https://blog.youkuaiyun.com/ABded/article/details/108332707</link><guid>https://blog.youkuaiyun.com/ABded/article/details/108332707</guid><author>ABded</author><pubDate>Sat, 05 Sep 2020 16:13:26 +0800</pubDate><description><![CDATA[文章目录1.内容提供器简介2.运行时权限2.1Android权限机制详解2.2在程序运行时申请权限3.访问其他程序中的数据3.1ContentResolver的基本用法3.2读取联系人4.创建自己的内容提供器4.1创建内容提供器的步骤4.2实现跨程序数据共享
1.内容提供器简介
内容提供器主要用于在不同的应用程序之间实现数据共享的功能，它提供了一套完整的机制，允许一个程序访问另一个程序的数据，同时还能保证被访问数据的安全性。
不同于文件存储和 SharedPreferences 存储中的两种全局可读写操作模]]></description><category></category></item></channel></rss>