<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_34784151的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_34784151</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_34784151]]></copyright><item><title><![CDATA[把View的事件打包成flow 方便各种操作]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/138040426</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/138040426</guid><author>qq_34784151</author><pubDate>Sun, 21 Apr 2024 18:10:29 +0800</pubDate><description><![CDATA[多次点击只取第一个，效果如同 RxView 的 throttleFirst。]]></description><category></category></item><item><title><![CDATA[使用Preview预览和自定义SurfaceView或者TextureView实现CameraX预览功能]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/137063325</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/137063325</guid><author>qq_34784151</author><pubDate>Wed, 27 Mar 2024 05:45:28 +0800</pubDate><description><![CDATA[自定义textureView 或则 SurfaceView 实现cameraX预览]]></description><category></category></item><item><title><![CDATA[封装了一个paging3的 IntKeyPagingSource 非常好用。使用的时候一行代码解决。]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/136756064</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/136756064</guid><author>qq_34784151</author><pubDate>Sat, 16 Mar 2024 09:55:30 +0800</pubDate><description><![CDATA[android jetpack的 paging3 封装使用，一行代码直接调用。简单快捷，让分页加载不再复杂让人头大]]></description><category></category></item><item><title><![CDATA[kotlin 简单封装 网络访问框架。]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/135281434</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/135281434</guid><author>qq_34784151</author><pubDate>Fri, 29 Dec 2023 03:31:12 +0800</pubDate><description><![CDATA[一行代码搞定，很愉快就调用了，而且还好理解，方便接手的人维护。不像有些博主写的框架，调用一层套一层，搞到后面接手的人很懵逼。RetrofitBuilder//拦截器请根据需求增加或者变动。BaseResponse//根据后台返回 适当修改。以上直接复制过去就能用，非常好用。]]></description><category></category></item><item><title><![CDATA[分享一个Loge打印日志的方法：简单好用，直接打印输出 所在类名+方法名]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/134680665</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/134680665</guid><author>qq_34784151</author><pubDate>Wed, 29 Nov 2023 03:20:48 +0800</pubDate><description><![CDATA[【代码】分享一个Loge打印日志的方法：简单好用，直接打印输出 所在类名+方法名。]]></description><category></category></item><item><title><![CDATA[android 插件开发，本项目采取的是 宿主和插件的 资源和pathList统一合并、代理的proxyActivity 单独进程，插件退出即proxyActivity所在进程关闭]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/132530978</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/132530978</guid><author>qq_34784151</author><pubDate>Mon, 28 Aug 2023 02:31:11 +0800</pubDate><description><![CDATA[中间件plugin 的baseActivity 也不继承 activity ,起名 含有 activity 仅仅 是标识一下，本人所有博文皆为原创，所有代码都是一气呵成，只是简单的运行一下没有啥问天就发博记录，没有优化，仅供参考。请注意，本项目和其他博主举例的有非常大的差别，请读者注意细节，插件不继承 activity,下面是中间件 plugin 包：BaseActivity   就是注册观察生命周期。]]></description><category></category></item><item><title><![CDATA[重新整理优化一下热修复。打补丁]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/132512313</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/132512313</guid><author>qq_34784151</author><pubDate>Sat, 26 Aug 2023 15:42:44 +0800</pubDate><description><![CDATA[【代码】重新整理优化一下热修复。打补丁。]]></description><category></category></item><item><title><![CDATA[合并插件宿主资源，合并插件宿主DexElements]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/132507229</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/132507229</guid><author>qq_34784151</author><pubDate>Sat, 26 Aug 2023 07:18:19 +0800</pubDate><description><![CDATA[Android 升级改版之后，很多方法 添加了 @hide，其中一些@hide 的方法无法通过反射使用。比如反射拿到的AMS,就无法再使用旧办法hook   startActivity 方法 绕过activity 注册检测。绕来绕去，又回到使用第一代旧办法做插件。以下是在 activity中使用：这是宿主的activity。以下提供一个工具类，合并 资源，合并classloader。反射工具类:Reflector 非常好用。插件打包成apk资源，即可在宿主调用.]]></description><category></category></item><item><title><![CDATA[android APP在线 热修复，打补丁。退出activity重新进入即可生效，无需重启APP]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/132267308</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/132267308</guid><author>qq_34784151</author><pubDate>Mon, 14 Aug 2023 00:22:03 +0800</pubDate><description><![CDATA[首先，需要修复的activity 设置单独的进程，这样每次退出activity 就可以关闭私有进程，而不会影响主工程（个人认为，每个activity都设置单独的进程。一个activity 就是一个模块，每个模块单独进程，一个入口主进程+多个模块，每个activity就是一个模块。一个模块的结构就是 一个activity+多个fragment）,在线热修复的时候,activity退出，即activity所在进程关闭（主进程还在无需主进程退出），再重新打开，即修复了漏洞。下面详解 热修复的核心代码。]]></description><category></category></item><item><title><![CDATA[ActivityResultLauncher 无需提前注册，JAVA实现。非常方便使用，可直接复制代码拿到项目使用。]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/132059861</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/132059861</guid><author>qq_34784151</author><pubDate>Wed, 02 Aug 2023 13:18:29 +0800</pubDate><description><![CDATA[getActivityResultRegistry非常简单的代码就能实现了 拍照，录制视频，申请权限，操作文档等这些。无需提前在onCreate注册 registerForActivityResult。]]></description><category></category></item><item><title><![CDATA[Messenger实现一个服务器链接多个客户端的跨进程双向通信。]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/131929874</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/131929874</guid><author>qq_34784151</author><pubDate>Wed, 26 Jul 2023 03:59:21 +0800</pubDate><description><![CDATA[比起自定义AIDL 我更喜欢使用Messenger信使。因为使用自定义AIDL 你还得考虑线程安全问题。Messenger 内部维护着一个队列，多个客户端链接也不会有访问同步问题。增加多个客户端就在 大同小异的代码添加上去即可，适用于获取到定位信息 然后给各个页面广播位置。]]></description><category></category></item><item><title><![CDATA[跨进程 使用Messenger(信使) 实现双向通信。]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/131915362</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/131915362</guid><author>qq_34784151</author><pubDate>Tue, 25 Jul 2023 12:58:43 +0800</pubDate><description><![CDATA[关键核心在于 客户端和服务端 双方持有一个对方发过来的Messenger , 后面利用Messenger发送Message实现双向通信，其实Messenger底层也是用Binder通信的。服务端：MessengerService。客户端:One_Fragment。]]></description><category></category></item><item><title><![CDATA[重新整理了一下AIDL双向通信，]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/131875781</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/131875781</guid><author>qq_34784151</author><pubDate>Sun, 23 Jul 2023 06:36:35 +0800</pubDate><description><![CDATA[【代码】重新整理了一下AIDL双向通信，]]></description><category></category></item><item><title><![CDATA[JS和android原生相互调用，JS传string 无限制调用android 原生工具类]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/131863432</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/131863432</guid><author>qq_34784151</author><pubDate>Sat, 22 Jul 2023 08:32:50 +0800</pubDate><description><![CDATA[JS在服务器端，可以随时更新。给用户的APP预留一些常用工具类，通过JS 调用android 反射生成对象，进而调用android预留的工具类方法。因为不是做项目，只是demo测试，只简单的转换了boolean和int,string类型的，其他的大同小异，根据需要补上即可。]]></description><category></category></item><item><title><![CDATA[ListenableFuture线程并发]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/131618866</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/131618866</guid><author>qq_34784151</author><pubDate>Sun, 09 Jul 2023 02:42:34 +0800</pubDate><description><![CDATA[提交100个任务，每个任务的运行时间不等。哪个先完成了就立刻返回结果，可以使用ListenableFuture。以下是任务的Task。]]></description><category></category></item><item><title><![CDATA[哥搜索了几天，都没有找到paging3 的java完整版本实现，]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/131588553</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/131588553</guid><author>qq_34784151</author><pubDate>Fri, 07 Jul 2023 06:01:27 +0800</pubDate><description><![CDATA[其实上文参考了，https://lequ7.com/guan-yu-javaandroidjetpack-jia-gou-zu-jian-jiu-zhi-paging.html 作者，但是他没有给出 Paging3DataSource 获取数据的实现，主要是子线程获取数据，到主线程那里。以WanAndroid的接口为例，接口地址为：https://www.wanandroid.com/article/list/1/json，数据源的代码如下。再定义 RetrofitClient ，这个简单，不复述了。]]></description><category></category></item><item><title><![CDATA[一个巧妙的方法获取 fragment 的 NavController]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/131547200</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/131547200</guid><author>qq_34784151</author><pubDate>Wed, 05 Jul 2023 07:21:47 +0800</pubDate><description><![CDATA[同时Activity的左上角ActionBar 有个回退的箭头。非常简单的代码，就能实现了无限切换fragment的布局，不管你有多少个fragment 都能随时切换，完全可以用来   单个Activity ,多个 fragment   架构APP。以下是Test6_Activity,就是一个 viewpager2，以及Mobile_Fragment 的生命周期监控回调，就是为了在 onResume 的时候取到NavController (在其他生命周期取到的为null)主要是留意左上角的 箭头。]]></description><category></category></item><item><title><![CDATA[使用 room 操作 ContentProvider]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/131465042</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/131465042</guid><author>qq_34784151</author><pubDate>Thu, 29 Jun 2023 21:56:03 +0800</pubDate><description><![CDATA[room , ContentResolver ,ContentProvider]]></description><category></category></item><item><title><![CDATA[手写一个RecyclerView的base_Adapter]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/131319277</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/131319277</guid><author>qq_34784151</author><pubDate>Wed, 21 Jun 2023 04:28:30 +0800</pubDate><description><![CDATA[下面是 ObservableArrayList_BaseRecyclerViewAdapter:，没有详细写foot_view功能，有空加上。MyRecyclerView_Adapter:  实体就是String ,这个有空我优化一下，就是。fragment 使用：          Fragment2_ViewModel。首先写一个数据变化观察的工厂:  ListFactory。下面是正式引用例子： 实例化 base_adapter。]]></description><category></category></item><item><title><![CDATA[LiveData 适配器 测试成功。]]></title><link>https://blog.youkuaiyun.com/qq_34784151/article/details/130945483</link><guid>https://blog.youkuaiyun.com/qq_34784151/article/details/130945483</guid><author>qq_34784151</author><pubDate>Tue, 30 May 2023 12:04:02 +0800</pubDate><description><![CDATA[Retrofit  直接返回  LiveData 数据，适用于 MVVM   android 原生代码]]></description><category></category></item></channel></rss>