
Android
文章平均质量分 78
weitao_666
我不生产代码,我只是代码的搬运工
展开
-
ViewBinding——Android之视图绑定
/原来的写法//使用ViewBinding的写法// 自定义view// 正常添加布局(亲测有效)// 方法二:// 针对根标签为merge。原创 2023-09-21 10:07:21 · 646 阅读 · 0 评论 -
Android Studio 创建项目不自动生成BuildConfig文件
今天在AS上新建项目发现找不到BuildConfig文件,怎么clear都不行。通过多方面查找发现原来gradle版本不同造成的,Gradle 8.0默认不生成 BuildConfig 文件。原创 2023-09-20 10:50:43 · 2629 阅读 · 5 评论 -
Android内存泄漏总结和性能优化技巧
对于许多开发者来说,安卓性能优化往往是一个比较棘手的问题。由于安卓设备的种类繁多,硬件配置各不相同,因此优化的方法和策略也各不相同。同时,安卓应用的开发周期较长,往往需要不断地迭代和更新,因此优化也需要不断地持续和优化。 学习安卓性能优化的知识和技巧,是每个安卓开发者必备的技能之一。通过掌握安卓性能优化的基本原理和方法,我们可以更加深入地了解安卓设备的工作机制,理解应用的性能瓶颈,从而采取有效的优化策略和措施,提高应用的性能和稳定性,提升用户的满意度和留存率。原创 2023-08-17 11:44:11 · 1176 阅读 · 3 评论 -
Android 13 媒体权限适配指南
Android 13 在最近也发布了正式版,此次版本中新增的隐私安全限制也终于能够解决众多应用长久以来的两个问题了。在很多 Android 应用中,都会通过内置一个图片选择器来向用户展示系统相册内的所有图片,常见于“上传用户头像、发送图片”等业务场景,这就需要通过获得 READ_EXTERNAL_STORAGE 权限来实现了。而这个权限也存在极大的隐私风险,应用也许会向用户说明该权限仅仅只会在选择图片时使用,但除了应用开发者外,谁又能确保应用不会依靠该权限在后台偷偷做些什么呢?而对于开发者来说也属于无奈转载 2023-08-17 11:00:24 · 4502 阅读 · 0 评论 -
使用 AndroidX 增强 WebView 的能力
从 Android 官方的角度,webkit可以推动 WebView 上游支持该 WebView API , 而这正是 AndroidX Webkit 的解决方案。Android 官方将定义的 WebView API 放置到 AndroidX Webkit 库,以支持频繁的更新,并在 WebView 上游增加“胶水层”与 AndroidX Webkit 进行衔接,这样在旧版的 Android 平台上,只要安装了拥有"胶水"层代码的 WebView ,也就拥有了新版平台的功能。原创 2023-08-11 16:24:05 · 1859 阅读 · 0 评论 -
Android沉浸式状态栏主题跟随状态栏背景颜色自动变化主题,状态栏主题跟随状态栏背景色自适应
Android沉浸式状态栏主题跟随状态栏背景颜色自动变化主题状态栏主题跟随状态栏背景色自适应Android系统提供了两种显示模式:明亮模式与暗黑模式整体偏亮,即背景亮色,文字等内容暗色。整体偏暗,即背景暗色,文字等内容亮色。原创 2023-08-04 16:06:52 · 1068 阅读 · 0 评论 -
阿里云移动推送的接入和踩坑
近期由于业务需求,要换掉以前的推送,首先选择了阿里云推送,官方介绍阿里移动推送(Alibaba Cloud Mobile Push)是基于大数据的移动智能推送服务,帮助App快速集成移动推送的功能,在实现高效、精确、实时的移动推送的同时,极大地降低了开发成本。让开发者最有效地与用户保持连接,从而提高用户活跃度、提高应用的留存率。那么接下来我们就一起看看是如何接入的。一. 在阿里云后台创建自己的...原创 2019-07-23 16:42:10 · 11388 阅读 · 13 评论 -
友盟推送(U-Push)集成、踩坑和解决与阿里云系列产品的依赖冲突
上一篇博客讲到接入阿里云移动推送,这一篇一起来看一下友盟的推送。友盟作为行业内较早做推送的第三方,在推送方面经验还是比较雄厚的,并且友盟对外宣称,友盟可以使用共享通道推送,也就是说,假如手机上装了别的应用也使用了友盟推送,当自己的App后台进程杀死的情况下,推送会利用别的app推送消息。我看了一下友盟的源码,代码里做了判断,当书籍上的app使用了淘宝的包名,或者淘宝和头条的域名,就可以使用共享渠道...原创 2019-07-23 19:12:20 · 6062 阅读 · 2 评论 -
友盟推送和阿里云移动推送使用注意事项、不同点比较
友盟推送和阿里云移动推送,都属于阿里系的产品,在使用上很大一部分还是很相似的,阿里云将移动推送、移动热修复、移动测试、移动数据分析和移动用户反馈集成到了一块,所有的远程依赖也都是集成在一起了,然而友盟的数据统计、概况统计、分享和推送是分开的。整体上个人觉得阿里云的接入要比友盟明了简单。下面我们一起来看看阿里云移动推送和友盟推送的有哪些注意事项吧!一. 阿里云推送的注意事项1. appK...原创 2019-07-24 13:39:15 · 2687 阅读 · 0 评论 -
Bugly接入、实现线上异常上报并实时通过微信将异常信息发送给开发者
近期项目有一个需求就是统计App的异常信息,并且异常信息要实时的通知到开发者,方便开发者第一时间掌握线上异常,以及客户反馈的异常及时查找问题的所在,后续通过阿里云的HotFix进行线上及时修复。目前市面上使用较多的第三方移动平台质量跟踪主要有友盟、Bugly、网易云捕和crashlytics。其中前三个是国内异常统计的第三方,国内开发者使用较多的也是前三者,目前我个人使用过有友盟和Bugly,这两...原创 2019-07-31 15:35:14 · 3192 阅读 · 0 评论 -
使用 Jenkins 实现Android自动化打包和踩坑经历
每当有项目做的过程中,测试需要做单元测试,每次手动的切换生产和测试环境,切换各种推送、统计和第三方账号相当的麻烦,同时还需要暂存代码,切换分支深的太过繁琐。此时如果将项目配置自动化打包了,那么就可以将这些问题解决了。我们来看一下Jenkins的配置流程。1.下载 JenkinsJenkins 官网下载地址:https://jenkins.io/download/,选择你电脑对应你的操作系统...原创 2019-08-05 13:42:47 · 2559 阅读 · 0 评论 -
Android反编译流程和apk反编译重新打包签名
作为一名Android开发者,很多的时候需要去学习别人优秀的代码,原本在GitHub上就有很多开源的项目代码,但有的时候在使用软件时候遇到自己想要的功能时,想要学习实现的代码时,这时候就需要使用到反编译这项技术了。正常情况下,Android应用打包成apk之后,就无法再看到开发这个应用时使用的资源文件以及代码了。但是我们通过网上提供了一些工具,还是可以将apk进行反编译的,apk反编译之后,我们就...原创 2019-07-28 16:49:05 · 2790 阅读 · 1 评论 -
Android实现倒计时跳转和延时操作
App启动页倒计时3秒跳转到App的首页,这种操作在很多App中都很常见。如果需要做一个延时操作呢?写一个子线程停留3秒然后执行操作,这样的话需要特别的注意的是UI操作必须放在主线程里,那么还需要转化成主线程?NO,使用Handler轻松实现倒计时和延时操作。一.启动页倒计时详细操作private int duration = 6;private Handler updateHandl...原创 2019-09-11 10:09:07 · 892 阅读 · 0 评论 -
安卓9.0适配方案和踩坑
年初的时候就已经适配了安卓9.0,但由于业务需求一直没有使用上,前段时间发布了,结果有用户反馈在安卓9.0的手机上更新下载App发生了闪退。这个时候发现9.0对权限、加密和Apache HTTP client发生了相关变化。一. 首先我遇到的第一个错误是:Caused by: java.lang.ClassNotFoundException: Didn't find class "org.ap...原创 2019-06-27 17:28:22 · 1600 阅读 · 0 评论 -
Android Studio中将一个项目转变成library(model)引入到另一个项目中使用
大家平时在做项目时,会经常应用library作为第三方依赖,那么如果公司中有多个app,其中有部分业务功能逻辑是相似并且可以复用的时候,我们货怎么办呢?简单粗暴的办法就是直接复制过来,但是这样做岂不是复用率不高,以后这部分代码要修改岂不是每个app都要修改。那么,把这部分代码作为library在项目中引用不就解决复用率的问题。下面就一块来学习一下如何将公共模块打包成library:1.提取...原创 2019-05-23 20:52:25 · 4566 阅读 · 4 评论 -
关于Android Studio2.3版本用小米4,小米5调试报Installation failed with message Failed to establish session. 解决办法
关于Android Studio2.3版本用小米4,小米5调试报Installation failed with message Failed to establish session. 解决办法原创 2017-03-27 10:34:35 · 6821 阅读 · 6 评论 -
Android 防止App升级过程被劫持和换包
在App再升级过程中,遭到劫持。根据用户反映更新后是一个未知的App。 针对此类情况,特做了app防劫持安装防护 稍作分析只要在本地对apk文件进行包名、应用名和签名校验,如果包名和签名不一致,那么就是伪装程序,这个漏洞显而易见!废话不多说直接上代码。public class ReadApkMessageUtils {原创 2017-10-25 20:18:43 · 1688 阅读 · 0 评论 -
Android O 8.0及其以上系统的通知(Notification)、安装apk问题更新后的简单兼容写法
最近时间在做Android8.0及其以上系统下App版本更新时,使用Android 8.0的手机测试发现两个问题:1.弹出通知栏没有展示,Toast:Developer warning for package “xxx.xxx.xxx” Failed to post notification on channel “null” See log for more details2.新安装包下...原创 2018-01-23 20:53:58 · 11979 阅读 · 2 评论 -
RecyclerView使用GridLayoutManager实现九宫格布局 item居中对齐问题
用RecyclerView实现九宫格的布局,除了常规的LinearLayout之外,还有比较常用的GridLayoutManager和StaggeredGridLayoutManager,后两种分别是九宫格布局、瀑布布局。本人这次主要运用用了GridLayoutManager布局,但是在实现的过程中,发现了item的布局无法居中,每次现实完全都会在界面的右边留有一部分空白,查找了很多方法都没能解决...原创 2018-02-28 16:32:22 · 65208 阅读 · 23 评论 -
监听Fragment B对用户是否可见——判断Fragment A切回到Fragmnet B、Fragment B跳到Activity 再从Activity返回到Fragment B
背景 最近在开发中遇到了一个问题,我们的app主要是由底部Tab页的Fragment构成,然而需要监听当某一个Fragment对用户可见时就需要刷新当前的Fragment。而在不同的使用情况下,判断Fragment是否可见的方法是不一样的。下面对这些不同的使用情况分开分析: 1.现在安卓市场上基本上的app都会做tab页,而tab页基本都是通过android自带的ViewPage...原创 2018-03-19 15:18:31 · 1143 阅读 · 1 评论 -
Android 兼容8.0 App全局字体调节、禁止App字体随系统字体大小而更改
在APP中,字体的大小单位一般会用sp,然而在改变系统字体大小时,App字体就会随着系统字体大小改变而改变,这就可能造成APP布局的错位。造成这种情况的原因是,sp单位除了受屏幕密度影响外,还受到用户的字体大小影响,通常情况下,建议使用sp来跟随用户字体大小设置。除非一些特殊的情况,不想跟随系统字体变化的,可以使用dp”。按照这么说,布局宽高固定写死的地方应该统一用dp显示字体,因为一旦用户在设置...原创 2018-03-29 17:51:11 · 10479 阅读 · 7 评论 -
Android中的EditText输入银行卡号四位空一格
近期项目开发有需要用户输入银行卡号,为了便于用户区分自己是否输入的正确,提升用户体验,特做了银行卡号四位一空格的操作。同时考虑到粘贴复制过来的银行卡号也要做四位一空格的处理,所以自定义了一个监听事件,用来处理空格。具体的操作如下:/** * 银行卡4位插入一空格监听 * Created by zeng on 2018/9/25. */public class NumSpaceT...原创 2018-10-15 17:14:47 · 1989 阅读 · 1 评论 -
Android7.0手机EditText双光标问题
近期项目中用到EditText,在Android7.0系统的手机上发现EditText上出现两个Cursor(光标),但是在5.0、6.0和8.0手机上不会出现这样的问题,具体的现象如下: 经各种测试发现,只有在一下情况下才会出现双光标的现象:1.Application的样式设置成 android:theme="@android:style/Theme.Light.NoTitleB...原创 2018-10-09 16:34:30 · 1341 阅读 · 0 评论 -
Retrofit2+Rxjava2+Rxandroid+okhttp3+Lifecycle 的MVP网络框架,精简Google官方AAC框架,实现APP生命周期的管理
一.介绍目前使用较为广泛的网络请求框架 MVP+Retrofit2+okhttp3+Rxjava2,我于2017年也加入了使用行列,在网上找了许多案例,实际项目开发中解决了一些所谓的坑,总结了些内容与大家共享一下。1.什么是MVP?在图中有三个模块view(界面),presenter(控制层),model(数据源)。他们在这个项目中中担任什么角色呢?2. MVP运行的过程M...原创 2019-04-12 17:24:10 · 1173 阅读 · 0 评论 -
手机设置无密码时显示“已被管理员、加密政策或凭据存储停用”的解决办法
前段时间手机上为了抓包安装了SSL证书,并且设置了锁屏密码。后来觉得锁屏密码很麻烦就想着关掉锁屏密码,发现无密码选项是灰色的,并且提示“已被管理员、加密政策或凭据存储停用”,如下图:网上百度大多数办法就是:设置——>安全——>删除凭证,然后关机重启;或者是:设置——>安全——>受信任的凭据——>用户那一栏,删除安装的证书。以上两种方法在大部分手机上可以...原创 2019-04-26 10:27:09 · 52688 阅读 · 11 评论 -
Retrofit2+Rxjava网络请求异常的统一封装处理
Retrofit2+Rxjava作为主流的网络请求框架,本文主要讲解针对网络请求的错误信息进行一次封装,方便我们根据返回的状态合理地在UI界面进行显示,同时如何主动取消网络请求的订阅。网络请求中有很多常见的错误,我们可以通过Toast弹出消息通知用户具体的异常以及加载对应的UI界面。除此之外,通过具体的异常信息,方便我们及时的排查项目中的BUG。那么我们就需要知道具体的错误是什么。Retrof...原创 2019-04-15 11:40:50 · 3942 阅读 · 0 评论 -
Android Q(10.0)版本新特性和兼容性适配
北京时间2019年3月14日Google正式对外发布Android Q Beta 1及预览版SDK,这意味着安卓开发者们又即将迎来一年一度的新版本适配工作了。Android Q 为开发者们带来了许多新功能,如折叠屏增强项、新网络连接 API、全新的媒体解码器、摄像头新功能、NNAPI 扩展、Vulkan 1.1 图形支持等等。2019/4 Beta2版本发布 ,5月份将会正式发布,本文将带大家对...原创 2019-04-18 12:02:29 · 31114 阅读 · 21 评论 -
关于Android 9.0 ClassNotFoundException: Didn't find class "org.apache.http.protocol.BasicHttpContext"
近期在项目中适配了Android9.0-P,但是在部分用户的手机上出现闪退的现象,通过捕获错误日志发现报的错如下:Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.protocol.BasicHttpContext" on path: DexPathList[[zip file "...原创 2019-05-10 20:07:39 · 2654 阅读 · 1 评论 -
关于listView、gridView的item的局部刷新
前一段时间,公司的业务需求,需要对产品的购买进度要做出局部刷新,就在网上查找到一些资料,并自己写了一个demo试了试,效果不错。listView和gridView刷新界面的方法大家普遍知道就是adapter.notifyDataSetChanged()进行界面刷新。但是如果每次都要讲整个数据刷新一遍会耗费很多的内存,局部刷新就避免了这一点。 主要原理:对listview的某一个it...原创 2017-04-12 11:26:35 · 811 阅读 · 0 评论