自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 把View的事件打包成flow 方便各种操作

多次点击只取第一个,效果如同 RxView 的 throttleFirst。

2024-04-21 18:10:29 113

原创 使用Preview预览和自定义SurfaceView或者TextureView实现CameraX预览功能

自定义textureView 或则 SurfaceView 实现cameraX预览

2024-03-27 05:45:28 370

原创 封装了一个paging3的 IntKeyPagingSource 非常好用。使用的时候一行代码解决。

android jetpack的 paging3 封装使用,一行代码直接调用。简单快捷,让分页加载不再复杂让人头大

2024-03-16 09:55:30 340

原创 kotlin 简单封装 网络访问框架。

一行代码搞定,很愉快就调用了,而且还好理解,方便接手的人维护。不像有些博主写的框架,调用一层套一层,搞到后面接手的人很懵逼。RetrofitBuilder//拦截器请根据需求增加或者变动。BaseResponse//根据后台返回 适当修改。以上直接复制过去就能用,非常好用。

2023-12-29 03:31:12 715

原创 分享一个Loge打印日志的方法:简单好用,直接打印输出 所在类名+方法名

【代码】分享一个Loge打印日志的方法:简单好用,直接打印输出 所在类名+方法名。

2023-11-29 03:20:48 194 1

原创 android 插件开发,本项目采取的是 宿主和插件的 资源和pathList统一合并、代理的proxyActivity 单独进程,插件退出即proxyActivity所在进程关闭

中间件plugin 的baseActivity 也不继承 activity ,起名 含有 activity 仅仅 是标识一下,本人所有博文皆为原创,所有代码都是一气呵成,只是简单的运行一下没有啥问天就发博记录,没有优化,仅供参考。请注意,本项目和其他博主举例的有非常大的差别,请读者注意细节,插件不继承 activity,下面是中间件 plugin 包:BaseActivity 就是注册观察生命周期。

2023-08-28 02:31:11 124 1

原创 重新整理优化一下热修复。打补丁

【代码】重新整理优化一下热修复。打补丁。

2023-08-26 15:42:44 88

原创 合并插件宿主资源,合并插件宿主DexElements

Android 升级改版之后,很多方法 添加了 @hide,其中一些@hide 的方法无法通过反射使用。比如反射拿到的AMS,就无法再使用旧办法hook startActivity 方法 绕过activity 注册检测。绕来绕去,又回到使用第一代旧办法做插件。以下是在 activity中使用:这是宿主的activity。以下提供一个工具类,合并 资源,合并classloader。反射工具类:Reflector 非常好用。插件打包成apk资源,即可在宿主调用.

2023-08-26 07:18:19 135

原创 android APP在线 热修复,打补丁。退出activity重新进入即可生效,无需重启APP

首先,需要修复的activity 设置单独的进程,这样每次退出activity 就可以关闭私有进程,而不会影响主工程(个人认为,每个activity都设置单独的进程。一个activity 就是一个模块,每个模块单独进程,一个入口主进程+多个模块,每个activity就是一个模块。一个模块的结构就是 一个activity+多个fragment),在线热修复的时候,activity退出,即activity所在进程关闭(主进程还在无需主进程退出),再重新打开,即修复了漏洞。下面详解 热修复的核心代码。

2023-08-14 00:22:03 96

原创 ActivityResultLauncher 无需提前注册,JAVA实现。非常方便使用,可直接复制代码拿到项目使用。

getActivityResultRegistry非常简单的代码就能实现了 拍照,录制视频,申请权限,操作文档等这些。无需提前在onCreate注册 registerForActivityResult。

2023-08-02 13:18:29 343

原创 Messenger实现一个服务器链接多个客户端的跨进程双向通信。

比起自定义AIDL 我更喜欢使用Messenger信使。因为使用自定义AIDL 你还得考虑线程安全问题。Messenger 内部维护着一个队列,多个客户端链接也不会有访问同步问题。增加多个客户端就在 大同小异的代码添加上去即可,适用于获取到定位信息 然后给各个页面广播位置。

2023-07-26 03:59:21 99 1

原创 跨进程 使用Messenger(信使) 实现双向通信。

关键核心在于 客户端和服务端 双方持有一个对方发过来的Messenger , 后面利用Messenger发送Message实现双向通信,其实Messenger底层也是用Binder通信的。服务端:MessengerService。客户端:One_Fragment。

2023-07-25 12:58:43 170

原创 重新整理了一下AIDL双向通信,

【代码】重新整理了一下AIDL双向通信,

2023-07-23 06:36:35 79 1

原创 JS和android原生相互调用,JS传string 无限制调用android 原生工具类

JS在服务器端,可以随时更新。给用户的APP预留一些常用工具类,通过JS 调用android 反射生成对象,进而调用android预留的工具类方法。因为不是做项目,只是demo测试,只简单的转换了boolean和int,string类型的,其他的大同小异,根据需要补上即可。

2023-07-22 08:32:50 1408

原创 ListenableFuture线程并发

提交100个任务,每个任务的运行时间不等。哪个先完成了就立刻返回结果,可以使用ListenableFuture。以下是任务的Task。

2023-07-09 02:42:34 113 1

原创 哥搜索了几天,都没有找到paging3 的java完整版本实现,

其实上文参考了,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 ,这个简单,不复述了。

2023-07-07 06:01:27 148 1

原创 一个巧妙的方法获取 fragment 的 NavController

同时Activity的左上角ActionBar 有个回退的箭头。非常简单的代码,就能实现了无限切换fragment的布局,不管你有多少个fragment 都能随时切换,完全可以用来 单个Activity ,多个 fragment 架构APP。以下是Test6_Activity,就是一个 viewpager2,以及Mobile_Fragment 的生命周期监控回调,就是为了在 onResume 的时候取到NavController (在其他生命周期取到的为null)主要是留意左上角的 箭头。

2023-07-05 07:21:47 367

原创 使用 room 操作 ContentProvider

room , ContentResolver ,ContentProvider

2023-06-29 21:56:03 333 1

原创 手写一个RecyclerView的base_Adapter

下面是 ObservableArrayList_BaseRecyclerViewAdapter:,没有详细写foot_view功能,有空加上。MyRecyclerView_Adapter: 实体就是String ,这个有空我优化一下,就是。fragment 使用: Fragment2_ViewModel。首先写一个数据变化观察的工厂: ListFactory。下面是正式引用例子: 实例化 base_adapter。

2023-06-21 04:28:30 133

原创 LiveData 适配器 测试成功。

Retrofit 直接返回 LiveData 数据,适用于 MVVM android 原生代码

2023-05-30 12:04:02 75 1

原创 【无标题】

文件缓存工具

2023-04-03 14:15:39 29 1

原创 二级缓存 RXJAVA 实现。

二级缓存 RXJAVA 实现

2023-04-03 01:46:42 206 1

原创 【无标题】

二级缓存框架

2023-04-03 01:26:44 56 1

原创 android AIDL双向通信简单实现

首先设置监听,定义AIDL 接口:IListener.aidl 文件:package com.example.servicesss;interface IListener{void sendMsgtoClient(String msg); (service消息给client)}再设置回调。ICallback.aidl 文件:package com.example.servicess...

2019-01-14 02:12:41 1462

空空如也

空空如也

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

TA关注的人

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