
Android
何浪
奋斗的男人
展开
-
Flutter点击返回键,回到桌面,但不退出APP的实现
Flutter点击返回键,回到桌面,但不退出APP的实现前言一、编写回到桌面方法的插件二、编写通过MethodChannel调用插件中方法三、使用返回桌面的方法总结前言只有Android手机上才会有返回APP的操作,所以以下所说的是针对Flutter的Android平台上开发,现在flutter的版本已经升级到1.22.0以上了,很多旧方法都不能用了,网络上有很多案例都是针对旧的flutter版本,所以我这边就做过新版本的该功能,方便大家参考一下提示:以下是本篇文章正文内容,下面案例可供参考一、编原创 2020-12-30 11:46:39 · 1947 阅读 · 0 评论 -
Android Jenkins 如何编译打包同一个Project中的不同的module
前言Jenkins是一个功能强大的打包工具,不仅可以编译打包JavaWeb项目,也可以编译打包Android和iOS项目。问题作为一个Android开发者,经常会碰到要打不同的渠道包,当然,这个直接可以在.gradle中直接配置不同flavor即可。但是,当我们在同一个工程Project中,新建了几个不同的Module(相当于不同的App ),这个时候问题就来了,Jenkins默认情况...原创 2018-11-09 13:55:35 · 1435 阅读 · 1 评论 -
Android 6.0系统 内存和缓存清理及相关动画
前言最近,做了一个清理android系统(基于6.0的一个定制系统)的内存等清理相关的模块,里面涉及到该系统的运行的相关进程清理和各个应用的缓存清理(提前说一下,需要系统签名,然后push 到系统目录中);由于6.0后,非本应用的data/data等目录都是不可读写的目录,当然这是为了应用安全,完全可以理解,所以清理这部分缓存的时候,就需要使用系统权限或者叫root权限功能说明能够将当...原创 2018-12-24 17:01:11 · 838 阅读 · 0 评论 -
jd-gui反编译工具出现INTERNAL ERROR?
前言经常做Android开发的同学,时常会去反编译他人的apk来“学习”,大家用得最多的就是apktool,dex2jar,jd-gui这三个工具将.dex文件转成.jar之后,不过,使用jd-gui来看源码的时候,有时候会遇到.class无法打开的情况,具体情况如下问题有时候会遇到INTERNAL ERROR等错误解决办法使用Luyten.jar工具来打开这个.jar...原创 2019-01-07 16:59:03 · 4812 阅读 · 0 评论 -
Android 接入微信SDK出现的签名问题
前言最近做了一个微信登录的功能,遇到了一点问题,导致纠结了一两天问题一般要接入第三方SDK的时候,都需要签名,其实,大部分都需要sha1的签名就可以了,如下图由于没有注意到微信文档里详情,就填写了sha1进去,如下图,导致调用微信的时候,一直弹签名不对的toast当我仔细阅读微信的官方文档后,发现,它需要签名的md5的值,还要小写,微信也提供签名获取工具填写完之...原创 2019-05-05 13:55:01 · 1162 阅读 · 0 评论 -
Android 如何手动制造系统回收
前言在Android 开发中,我们会经常遇到Activity或者fragment等组件被系统回收的问题,我们就要处理这种情况,以便于我们可以保存用户的数据,然后,恢复它问题要想看到系统回收的现象,必然不是很容易看到的,因为,系统只有在系统资源不足的情况下,才会回收非前台的资源解决办法手动制造系统回收,才会让开发者快速处理系统回收这之类的问题,废话不多说,打开开发者选项,如下图,...原创 2019-05-05 16:07:27 · 1661 阅读 · 0 评论 -
fragment切换时,transaction调用commit()出现卡死ANR
问题最近遇到个问题,当多个fragment被添加到activity中后,如果在当前fragment中停留过久的话,再去操作fragment之间的切换,可能会造成ANR(PS.这个应用是运行在一种配置很低的设备上)。思索当时就想,是不是由于Android系统在资源吃紧的情况下,会自动回收后台的进程,但是,只有一个activity+多个fragment,对所有的生命周期进行了日志观察,并未...原创 2019-05-24 15:52:39 · 1667 阅读 · 0 评论 -
Android Studio无法打开xx.xx.xx.hprof内存分析文件?
前言最近在做Android中的内存分析相关的事情,在一些低版本的Android设备中,无法使用stuido中的Profile工具,因此需要使用之前的DDMS工具。使用DDMS 抓下的xx.xx.xx.hprof是无法直接在打开的,这个时候要Android studio开发,但是出现了文件类型无法识别的错误,本来是以.hprof的后缀,理论上是可以打开的。当我尝试将前面多余的"."去掉之后,...原创 2019-05-16 11:45:11 · 1270 阅读 · 0 评论 -
Flutter编译插件中的gradle不通过的问题
前言最近在弄flutter的开发,需求中要通过flutter调用native的页面,遇到一个编译的问题问题The Gradle failure may have been because of AndroidX incompatibilities in this Flutter app.导致无法找到android.support之类的库原因由于最新的flutter S...原创 2019-06-12 18:11:59 · 1610 阅读 · 0 评论 -
Flutter插件开发中iOS图片等资源配置问题
前言flutter开发中,不可避免要使用原生的东西,比如,我们要调用原生自定义的相机,就会涉及到和flutter和native的通信等问题Flutter和native通信方式1.不通过插件直接在flutter目录中,分别在android和iOS目录,直接定义就可以了,然后通过MethodChannel来注册通信即可这种方式缺点也比较明显,比如不利于解耦,导致这2个子目录臃肿,修...原创 2019-06-14 16:33:37 · 1648 阅读 · 2 评论 -
解决android MediaPlayer获取不到在线音乐时长
前言最近,开发了一个项目,里面有涉及到了MP3等音频播放的功能,就稍微梳理下,开发过程中遇到的问题,其中之一就是,通过MediaPlayer获取在线音频的时长,无法成功分析首先,看看mediaPlayer.getDuration()的源码,里面明确地说了,不支持在线内容,所以,根本原因就是它 /** * Gets the duration of the file....原创 2019-10-11 11:50:11 · 2364 阅读 · 0 评论 -
Android 几种异步方式,解决主线程中遇到的卡顿
起因:当我们的UI越来越复杂的时候,或者说某个业务需要大量的计算的时候,我们的主线程会消耗大量的资源去计算,这个时候,我们的Activity或者说fragmemt等UI页面就会出现卡顿,乃至ANR。总结一下,就是我们直接在主线程(UI线程)中,做耗时操作,就会造成卡顿,甚至ANR解决方案:1.优化耗时的计算,提高算法,利用缓存等数据;这种方式,一般带来的提升在App这种场景中微乎其微,...原创 2018-08-20 15:08:02 · 2757 阅读 · 0 评论 -
Android 基于Aidl的跨进程间双向通信管理中心(类似于聊天室)
得益于最近有点时间和精力,我想起来了一件事。那就是在上家公司,公司要求做一个APP进程间的通信的功能,并不是APP对APP的直接跨进程通信,而是通过一个服务中心,做接收,然后,再转发,避免应用之间耦合性高,不然的话,新增一个APP,其他APP也要进行升级更新(类似于有服务中心的聊天室)。我就花几个小时写点东西吧,顺便记录一下大家都知道在Android设备上,有很多方式,比如,广播,sock...原创 2018-07-31 22:23:27 · 741 阅读 · 0 评论 -
Android res/raw和assets目录的异同
如题,相同点:放在这两个目录中的文件都不会被打包编译成二进制,会原封不动放入APK中,如一些声音文件,数据库文件等,这些需要原封不动地放在APK中使用不同点:res/raw不允许有文件夹形式的文件,而assets可以允许有文件夹...原创 2018-05-04 11:58:08 · 257 阅读 · 0 评论 -
Android中DialogFragment优于Dialog
首先DialogFragment是跟随Fragment一起被Google推出的,DialogFragment是基于Fragment的,生命周期和Fragment是一样的。在Android中,实现对话框的方式多种:Dialog/AlterDialogFragmentActivity的Style设置成Dialog通常,我们在开发中实现通过继承Dialog来实现对话框的效果,但是,基于Dialog的对话...原创 2018-04-26 16:12:35 · 3394 阅读 · 0 评论 -
Android中将APK放入系统APK目录中,找不到so文件
如题,将APK直接放入系统目录中,会导致APK找不到so文件,正常情况下的安装是使用PackageManager,它会将so文件拷入系统读取的so文件夹目录下,提供给App使用;系统应用就是不会使用PackageManager去安装,所以在使用系统应用前,提前将so文件拷入到so文件夹目录下(一般是system/lib目录)重启后,App 就可以调用so文件了...原创 2018-04-26 16:19:29 · 3812 阅读 · 3 评论 -
Android中 ListView,RecyclerView中item显示错位的问题?
因为在Adapter中,为了性能都会给ViewHolder做缓存,防止ListView,RecyclerView创建过多的itemView,消耗过多的性能下面就以ListView和BaseAdapter简单地讲一下,代码很简单: @Override public View getView(int position, View convertView, ViewGroup parent) {...原创 2018-04-26 16:58:02 · 1361 阅读 · 0 评论 -
Android中gradle文件中implementation和compile的异同
相同之处:都是为Module添加依赖不同之处:implementation不可以依赖传递,但是compile可以依赖传。这是什么意思呢?有经验的开发人员基本上都了解,举个例子,如果一个App依赖于libA,libA又依赖于libB,那么App可以调用libB中的方法吗?经过验证,如果App implementation libA (libA implementation libB),那么App是无...原创 2018-04-26 17:33:29 · 1173 阅读 · 0 评论 -
Android 自定义垂直,旋转,圆形进度提示 自定义Seekbar
SeekBar是用来调节参数值的,系统默认的一般都不太适合我们,需要我们自定义,里面也有一个RxJava背压的具体应用废话不多说,看图 package com.example.helang.seekbar;import android.content.Context;import android.graphics.Bitmap;import android.graph...原创 2018-05-29 21:48:14 · 1678 阅读 · 0 评论 -
Android Lifecycle 对MVP模式进一步”解耦“
传统的MVP模式中,不可避免要在V中的生命周期中要做很多业务操作,导致actitvity等还是臃肿不堪。因此,谷歌在2017年的IO大会上推出了Lifecycle框架,希望借Lifecycle将activity的生命周期事件传递给Presenter,让Presenter承担部分业务,从而降低了Activity的复杂度。lifecycle本身就是一个依赖注入的框架,具体的原理和源码也比较简单,这里就...原创 2018-06-20 11:11:13 · 1485 阅读 · 0 评论 -
仿百度地图小度语音助手的贝塞尔曲线动画
废话不多说,看下面的动图,和百度的还是有点点差别,我也不修改了,很简单,我实在是没有多余的时间,还要学习其他的东西,累啊,(复杂的动态View,可以使用SurfaceView,效率更高,我这里就简单使用View了)效果图:仔细观察一下百度那个动画,其实是由三层曲线组成的;每层曲线又是由三个贝塞尔曲线组成的。所以一层一层叠加,加上颜色的渐变,就可以绘制出来类似于山峰的曲线;最后,动态改变...原创 2018-07-26 14:25:39 · 2050 阅读 · 0 评论 -
Android 接入高德地图SDK模块的优化点点滴滴
起因:由于在最近接手了一个关于导航的App,发现地图页面跳来跳去实在是卡顿地不行(运行在车载设备上的APP,机器性能实在是有限)。初步判断:应该是是关于地图等控件的反复创建和销毁,给内存GC带来了很大的压力。简单调查:通过 命令 adb shell dumpsys meminfo com.xxxx.xxx (后面那个是包名,当然你可以使用MAT等工具来看)带有地图控件的...原创 2018-08-03 18:29:56 · 2389 阅读 · 0 评论 -
Android使用CardView多出的角,怎么办?
某天一个同事问我,为什么他使用CardView会变成这样?我看了他的代码注意一行 app:cardbackgroundColor="@color/transparent"原因就是透明色去掉之后就正常了...原创 2018-07-31 15:11:10 · 1528 阅读 · 0 评论 -
Android WebView加载网页,图片等元素宽度大小不兼容手机屏幕的宽度
无论是Android手机还是iOS手机,使用WebView加载一些没有专门为手机屏幕做适配的网页的时候,就会出现网页中的图片等标签元素的宽度大小和手机屏幕的宽度不一致的情况,如下图之所以会出现上面的情况,是因为网页中的dom元素大小没有适配到移动网页中,有些元素是把宽度固定死的解决办法有很多:前端人员将网页适配到移动端(优点:最为规范的做法 缺点:一些不再维护的项目,是没有前端人员来适配)移...原创 2018-04-25 18:34:45 · 2412 阅读 · 0 评论