<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[no_stop_1的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/no_stop_1</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; no_stop_1]]></copyright><item><title><![CDATA[kotlin协程与rxjava分析理解 (二)]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/123211743</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/123211743</guid><author>no_stop_1</author><pubDate>Tue, 01 Mar 2022 18:19:13 +0800</pubDate><description><![CDATA[协程与retrofit结合使用

创建service，返回类型为自定义response

 @POST("...")
    suspend fun login1(
        @Path("login") login: String,
        @Body body: RSRfLoginRequest
    ): BaseResponse&lt;RSRfLoginResponse&gt;

class BaseResponse&lt;T&gt;(val success: Boolean = f]]></description><category></category></item><item><title><![CDATA[kotlin协程与rxjava分析理解(一)]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/123137618</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/123137618</guid><author>no_stop_1</author><pubDate>Fri, 25 Feb 2022 19:24:24 +0800</pubDate><description><![CDATA[什么是协程

处理多任务并发的手段，最大的特点就是可以自动帮助我们切换线程，简单说协程就是一个线程框架
developer链接
官网链接

协程和线程的关系
协程和线程，都能用来实现异步调用，但是这两者之间是有本质区别的

协程是编译器级别的，线程是系统级别的。协程的切换是由程序来控制的，线程的切换是由操作系统来控制的
协程是协作式的，线程是抢占式的。协程是由程序来控制什么时候进行切换的，而线程是有操作系统来决定线程之间的切换的。
一个线程可以包含多个协程
Java中，多线程可以充分利用多核cpu，协程是在]]></description><category></category></item><item><title><![CDATA[Android SmartRefreshLayout自定义刷新头]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/122087578</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/122087578</guid><author>no_stop_1</author><pubDate>Wed, 22 Dec 2021 16:25:13 +0800</pubDate><description><![CDATA[自定义刷新头

参照ClassicsHeader源码，发现实现SimpleComponent（继承RelativeLayout）比较好，可以少重写很多接口方法
布局通过代码addView进去或者inflate都行，inflate布局时自动就会把布局加入到RelativeLayout中，因为constructor super类实现了getView方法，return mWrappedView == null ? this : mWrappedView 当空时返回的就是inflate的布局，而此方法在SmartR]]></description><category></category></item><item><title><![CDATA[Android recyclerview item获焦时更新UI导致列表自动滚动到获焦处]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/121839777</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/121839777</guid><author>no_stop_1</author><pubDate>Thu, 09 Dec 2021 19:48:23 +0800</pubDate><description><![CDATA[问题场景描述：scrollview嵌套rv，rv item里有edittext，当edittext处于获焦状态时，item中有数据改变导致更新UI时，此时列表会自动滚动到获焦处。
分析原因：更新UI时布局会自动去找获焦的控件，定位到时就会主动滚动到当前位置
解决方案思路：其实就是控制当用户不输入时就让焦点消失即可


方案一：.点击屏幕（除edittext外）的时候找到当前获焦的edittext，然后清空焦点并让键盘自动隐藏


未采用此方案原因 这里有一个未解决的问题，就是点击edittext弹起键盘时，]]></description><category></category></item><item><title><![CDATA[The project uses Gradle version which is incompatible with Studio running on Java 10 or newer]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/118908271</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/118908271</guid><author>no_stop_1</author><pubDate>Tue, 20 Jul 2021 10:02:25 +0800</pubDate><description><![CDATA[AndroidStudio4.2版本兼容问题
今天在开发公司一个老项目时发现AS4.2版本与gradle有不兼容问题，具体描述如下：

我本地的AndroidStudio版本是4.2，而我们项目的gradle版本是3.0.1，编译报错不兼容，提示需要升级到4.8.1，升级后是不报错了，但各种类方法依赖库找不到问题，因此此方法行不通
最后经过排查发现原因为，4.2版本google默认是排在java11上的，所以导致了上面的问题，于是乎就想着把默认编译版本改到java 1.8，就下了一个插件ChooseRunt]]></description><category></category></item><item><title><![CDATA[Android 开发 Content Provider 使用 demo]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/114374608</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/114374608</guid><author>no_stop_1</author><pubDate>Thu, 04 Mar 2021 19:12:46 +0800</pubDate><description><![CDATA[在我们Android开发中难免会用到Content Provider，主要是为了实现进程间访问数据，数据库是Android开发中最基本的数据保存方式，但由于数据库的私有性，我们无法对外提供或获取信息，当两个应用需要实现数据共享时，此时就需要本篇文章的主题——ContentProvider

一.提供数据端-contentprovider

1.首先新建一个自己的content provider类继承自ContentProvider，重写onCreate insert query update delete.]]></description><category></category></item><item><title><![CDATA[Android开发 messenger 使用demo]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/114330482</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/114330482</guid><author>no_stop_1</author><pubDate>Wed, 03 Mar 2021 20:00:26 +0800</pubDate><description><![CDATA[上篇文章大致讲了AIDL，本篇的主人公是messenger，其底层原理也是AIDL，利用Android的binder机制实现的，下面简单记录一下使用方法

一.messenger 简介

Messenger “信使”，顾名思义，它的作用就是传递信息。

Messenger 有两个构造函数：

以 Handler 为参数
	以 Binder 为参数
下面为两种构造方法的代码


private final IMessenger mTarget;
public Messenger(Handler target.]]></description><category></category></item><item><title><![CDATA[Android 开发 AIDL 使用demo]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/114326700</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/114326700</guid><author>no_stop_1</author><pubDate>Wed, 03 Mar 2021 19:09:32 +0800</pubDate><description><![CDATA[Android中进程通信方式有很多种，简单总结了一下，如下图所示

进程通信方式对比下面就不废话了，直接上代码写一个简单的demo

一.服务端

 1.先new一个AIDL file，里面写一个测试的方法：


package com.example.aidlservertest;


interface IMyAidlInterface {

   String getTestName(String s);
}

2. 新建一个Service，里面使用刚才创建的AIDL 接口代理对象赋值...]]></description><category></category></item><item><title><![CDATA[android 开发 线程与线程通信]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/88342337</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/88342337</guid><author>no_stop_1</author><pubDate>Fri, 08 Mar 2019 10:27:02 +0800</pubDate><description><![CDATA[android 开发 线程与线程通信，直接上代码


 private Handler handler1;//主线程中的handler在子线程中使用

    //线程一
    public class Thread1 extends Thread {

        public Handler getHandler1() {//注意哦，在run执行之前，返回的是null
         ...]]></description><category></category></item><item><title><![CDATA[android 开发activity动态传值给fragment时遇到的问题]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/88315251</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/88315251</guid><author>no_stop_1</author><pubDate>Thu, 07 Mar 2019 18:39:28 +0800</pubDate><description><![CDATA[最近在做项目中有个需求就是viewpager嵌套fragment，写一个搜索的界面，然后外部的activity动态传值给里面的fragment，里面用传进来的value值去搜索展示数据，遇到的 问题就是我for循环创建了4个fragment，然后在activity中写了个接口，fragment实现接口接收值，但是4个fragment只有最后一个接收到传过来的值了，其他的都为null，然后就一直不...]]></description><category></category></item><item><title><![CDATA[android 开发viewPager滑动实现禁止预加载机制]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/81183685</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/81183685</guid><author>no_stop_1</author><pubDate>Tue, 24 Jul 2018 14:40:48 +0800</pubDate><description><![CDATA[  在我们开发过程中，viewpager官方的加载机制是有预加载的，默认会把当时的这个fragment的左右两个都给预加载出来，即使调用 viewPager.setOffscreenPageLimit(0)这个方法，默认还是1，还是会有预加载的，所以我们就用懒加载的方式来禁止这种预加载，简答说就是当fragment初始化过后，而且它还是可见的，那么我们就让他去加载数据。

下面直接上代码

第一：...]]></description><category></category></item><item><title><![CDATA[android开发首页基本框架搭建]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/81169435</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/81169435</guid><author>no_stop_1</author><pubDate>Mon, 23 Jul 2018 16:21:43 +0800</pubDate><description><![CDATA[

第一点：  项目的需求介绍

android 开发中首页的搭建一般都是底部四部分（是个view就可以），上面是fragment，要实现的效果是，第一，不可以滑动；第二，第一次启动进来的时候默认启动一个fragment，点击哪一个就让哪一个加载出来；第三，一旦加载一次后，再次点击这个fragment就不要让他在重复加载了。

第二点：fragment的几个方法介绍

主要的方法有，replace...]]></description><category></category></item><item><title><![CDATA[android 开发 微博分享时遇到的坑]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/78815191</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/78815191</guid><author>no_stop_1</author><pubDate>Fri, 15 Dec 2017 17:25:09 +0800</pubDate><description><![CDATA[最近想项目中遇见了写微博分享，就专门下了微博SDK去看，开始肯定是要先去微博开发平台上申请开发者并注册app，成功后会获得App Key和App
 Secret，然后才可以进行下面的操作，但在写的过程中发现微博的SDK还是有点坑的，这里列举出来，以便以后避开坑，踩坑是真难受啊，下面挨着讲述一下。
1： iWeiboShareAPI = WeiboShareSDK.createWeiboAPI(]]></description><category></category></item><item><title><![CDATA[android recyclerview 关于viewtype的使用]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/78596084</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/78596084</guid><author>no_stop_1</author><pubDate>Tue, 21 Nov 2017 20:09:15 +0800</pubDate><description><![CDATA[在android开发中我们会经常recyclerview，而viewType的使用也是很重要的，viewType的作用就是加载不同的item
直接上代码
1：要现在adapter里面重写一个方法
    @Override
    public int getAdapterItemViewType(int position) {
        if (fragmentOrderDataLi]]></description><category></category></item><item><title><![CDATA[android 实现微信分享添加缩略图的一个大坑]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/78595305</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/78595305</guid><author>no_stop_1</author><pubDate>Tue, 21 Nov 2017 18:32:36 +0800</pubDate><description><![CDATA[在微信分享中，官方给我们提供的设置缩略图的方法为


这时候你会发现Util这个文件是没有的，要去开发SDK里面找到这个类，把这类拿来之后，然后很高兴的去运行了，这时候你就会发现你个调不起微信客户端，很郁闷，不知道哪里出了问题，到最后去一查，才发现是图片要压缩到32kb才看可以放进去，二Util里面的那个压缩方法是不管用的，在这里给一个压缩的方法，也就是官方的bmpToByteArray]]></description><category></category></item><item><title><![CDATA[android 开发 ExpandableListView的使用介绍]]></title><link>https://blog.youkuaiyun.com/no_stop_1/article/details/78592299</link><guid>https://blog.youkuaiyun.com/no_stop_1/article/details/78592299</guid><author>no_stop_1</author><pubDate>Tue, 21 Nov 2017 15:15:06 +0800</pubDate><description><![CDATA[android开发过程中难免会遇见一些比较复杂的布局，二维list的使用时经常的事情，这里就介绍一种非常好用的二维ExpandableListView，主要是他的adapter的使用非常的重要，直接上代码。


上面的是个方法直接对应把该实现的代码放进去
需要注意的是
1：在原来的这个布局中默认是不打开的，实现了下面这个方法就可以实现展示出来的数据就是展开后的数据，一下两个方法在一起使用]]></description><category></category></item></channel></rss>