- 博客(24)
- 收藏
- 关注
原创 使用Preview预览和自定义SurfaceView或者TextureView实现CameraX预览功能
自定义textureView 或则 SurfaceView 实现cameraX预览
2024-03-27 05:45:28
794
原创 封装了一个paging3的 IntKeyPagingSource 非常好用。使用的时候一行代码解决。
android jetpack的 paging3 封装使用,一行代码直接调用。简单快捷,让分页加载不再复杂让人头大
2024-03-16 09:55:30
419
1
原创 kotlin 简单封装 网络访问框架。
一行代码搞定,很愉快就调用了,而且还好理解,方便接手的人维护。不像有些博主写的框架,调用一层套一层,搞到后面接手的人很懵逼。RetrofitBuilder//拦截器请根据需求增加或者变动。BaseResponse//根据后台返回 适当修改。以上直接复制过去就能用,非常好用。
2023-12-29 03:31:12
1024
原创 分享一个Loge打印日志的方法:简单好用,直接打印输出 所在类名+方法名
【代码】分享一个Loge打印日志的方法:简单好用,直接打印输出 所在类名+方法名。
2023-11-29 03:20:48
271
1
原创 android 插件开发,本项目采取的是 宿主和插件的 资源和pathList统一合并、代理的proxyActivity 单独进程,插件退出即proxyActivity所在进程关闭
中间件plugin 的baseActivity 也不继承 activity ,起名 含有 activity 仅仅 是标识一下,本人所有博文皆为原创,所有代码都是一气呵成,只是简单的运行一下没有啥问天就发博记录,没有优化,仅供参考。请注意,本项目和其他博主举例的有非常大的差别,请读者注意细节,插件不继承 activity,下面是中间件 plugin 包:BaseActivity 就是注册观察生命周期。
2023-08-28 02:31:11
161
1
原创 合并插件宿主资源,合并插件宿主DexElements
Android 升级改版之后,很多方法 添加了 @hide,其中一些@hide 的方法无法通过反射使用。比如反射拿到的AMS,就无法再使用旧办法hook startActivity 方法 绕过activity 注册检测。绕来绕去,又回到使用第一代旧办法做插件。以下是在 activity中使用:这是宿主的activity。以下提供一个工具类,合并 资源,合并classloader。反射工具类:Reflector 非常好用。插件打包成apk资源,即可在宿主调用.
2023-08-26 07:18:19
237
原创 android APP在线 热修复,打补丁。退出activity重新进入即可生效,无需重启APP
首先,需要修复的activity 设置单独的进程,这样每次退出activity 就可以关闭私有进程,而不会影响主工程(个人认为,每个activity都设置单独的进程。一个activity 就是一个模块,每个模块单独进程,一个入口主进程+多个模块,每个activity就是一个模块。一个模块的结构就是 一个activity+多个fragment),在线热修复的时候,activity退出,即activity所在进程关闭(主进程还在无需主进程退出),再重新打开,即修复了漏洞。下面详解 热修复的核心代码。
2023-08-14 00:22:03
177
原创 ActivityResultLauncher 无需提前注册,JAVA实现。非常方便使用,可直接复制代码拿到项目使用。
getActivityResultRegistry非常简单的代码就能实现了 拍照,录制视频,申请权限,操作文档等这些。无需提前在onCreate注册 registerForActivityResult。
2023-08-02 13:18:29
452
原创 Messenger实现一个服务器链接多个客户端的跨进程双向通信。
比起自定义AIDL 我更喜欢使用Messenger信使。因为使用自定义AIDL 你还得考虑线程安全问题。Messenger 内部维护着一个队列,多个客户端链接也不会有访问同步问题。增加多个客户端就在 大同小异的代码添加上去即可,适用于获取到定位信息 然后给各个页面广播位置。
2023-07-26 03:59:21
176
1
原创 跨进程 使用Messenger(信使) 实现双向通信。
关键核心在于 客户端和服务端 双方持有一个对方发过来的Messenger , 后面利用Messenger发送Message实现双向通信,其实Messenger底层也是用Binder通信的。服务端:MessengerService。客户端:One_Fragment。
2023-07-25 12:58:43
210
原创 JS和android原生相互调用,JS传string 无限制调用android 原生工具类
JS在服务器端,可以随时更新。给用户的APP预留一些常用工具类,通过JS 调用android 反射生成对象,进而调用android预留的工具类方法。因为不是做项目,只是demo测试,只简单的转换了boolean和int,string类型的,其他的大同小异,根据需要补上即可。
2023-07-22 08:32:50
1588
原创 ListenableFuture线程并发
提交100个任务,每个任务的运行时间不等。哪个先完成了就立刻返回结果,可以使用ListenableFuture。以下是任务的Task。
2023-07-09 02:42:34
160
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
218
1
原创 一个巧妙的方法获取 fragment 的 NavController
同时Activity的左上角ActionBar 有个回退的箭头。非常简单的代码,就能实现了无限切换fragment的布局,不管你有多少个fragment 都能随时切换,完全可以用来 单个Activity ,多个 fragment 架构APP。以下是Test6_Activity,就是一个 viewpager2,以及Mobile_Fragment 的生命周期监控回调,就是为了在 onResume 的时候取到NavController (在其他生命周期取到的为null)主要是留意左上角的 箭头。
2023-07-05 07:21:47
585
原创 手写一个RecyclerView的base_Adapter
下面是 ObservableArrayList_BaseRecyclerViewAdapter:,没有详细写foot_view功能,有空加上。MyRecyclerView_Adapter: 实体就是String ,这个有空我优化一下,就是。fragment 使用: Fragment2_ViewModel。首先写一个数据变化观察的工厂: ListFactory。下面是正式引用例子: 实例化 base_adapter。
2023-06-21 04:28:30
177
原创 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
1528
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人