![](https://img-blog.csdnimg.cn/1ef6dc8647ef40c1807d2634e2ed7db0.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
android开发
文章平均质量分 66
android开发常见问题及解决方案
VipPeterGee
不忘初衷,方得始终
展开
-
ViewPager+Fragment设置数据后不刷新问题解决方案
使用ViewPager+Fragment搭建页面很方便,但是ViewPager的缓存问题会导致设置数据后,Fragment中数据更新不及时,可谓让开发者又爱又恨。原创 2022-11-12 17:11:12 · 2111 阅读 · 1 评论 -
LeakCanary 使用及原理分析
一、基础1、添加依赖dependencies { // debugImplementation because LeakCanary should only run in debug builds. debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'}2、基本原理2.1 什么是内存泄漏在基于Java的runtime状态下,内存泄漏是一种变成错误,导致应用保留对无用对象引用,从而引起内存无法回收,导致O原创 2021-10-20 14:18:46 · 1325 阅读 · 0 评论 -
更新完Android Studio 4.2报错javax/xml/bind/JAXBException解决方法
原因更新完Android Studio 4.2后默认JDk中不包含JAXB API导致解决方法:方法一Project Structure -> Platform Settings\SDKs -> Android API xx Platform -> Change "Java SDK" to 1.8方法二、指定JDk路径为本地JDK路径...原创 2021-05-07 15:13:42 · 4785 阅读 · 2 评论 -
TransactionTooLargeException解决与分析
1、前言:前段时间线上突然间报了一个问题,从页面详情页(以下简称页面A)跳转图片浏览页(以下简称页面B),发生崩溃,但是只有个别的页面A跳转页面B发生崩溃,后来通过查询崩溃日志发现一个异常:TransactionTooLargeException2、问题排查:通过查询代码,发现是因为页面B跳转页面B通过Bundle传递了Parcelable对象,但是通过Bundle传递Parcelable大小限制为1M,超出1M就会报TransactionTooLargeException3、解决方案:1、原创 2021-04-13 15:50:22 · 1319 阅读 · 0 评论 -
Android10手机无法拉起微信小程序解决方案
起因近期测试反馈Android10系统华为手机上无法拉起小程序,但是在同版本系统其它品牌手机上可以正常拉起。排查通过微信社区问题查询,发现也有开发者遇到该问题,微信运营团队回复是机型兼容性问题导致解决方案1、查看微信悬浮窗权限是否开启,如果没有开启,开启后可正常使用2、更新微信SDK版本,在 build.gradle 文件中,添加如下依赖即可dependencies { api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta原创 2020-11-03 14:11:12 · 2799 阅读 · 2 评论 -
ViewPager2,用起来!
一、缘起:ViewPager2推出已经有一段时间了,而且官方推出了稳定版本Version 1.0.0,相比ViewPager增加了很多优势,是时候用起来了。二、优势1、垂直方向支持ViewPager2 支持垂直分页 <androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewpager_two" android:layout_width="match_parent"原创 2020-07-23 14:55:59 · 3371 阅读 · 0 评论 -
电商项目之环信在线客服接入
一、缘起电商项目开发中在线客服属于常见需求,可以通过环信开发文档按照步骤接入,由于很多同学在开发过程中经常遇到问题,而且环信提供的Demo无法正常运行,所以写下这篇文章用于解惑。二、材料准备1、在环信客服后台创建客服云账号2、下载官方demo下载链接https://github.com/easemob/kefu-android-demo三、开始接入1、build.gradle 配置android{ ...... defaultConfig { ndk {原创 2020-06-02 14:43:58 · 1068 阅读 · 0 评论 -
addView引发的崩溃问题及思考分析
开发过程中经常会通过addView()方法动态添加子控件,如果不注意的话会出现异常:Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child’s parent first.一、实际案例下面我们通过一个...原创 2020-04-20 18:13:52 · 2688 阅读 · 0 评论 -
Mac版AndroidStudio快捷键,提升你的开发效率!
AndroidStudio Mac快捷键 (Mac OS 10.5+)由于最近更换mac电脑开发android,特总结一篇关于AndroidStudio的快捷键文章,提高开发效率,用于备忘分享常规操作功能描述快捷键全部保存Command+S同步Command+Option+Y最大化/最小化编辑器Ctrl+Command+F12添加到收藏夹Opti...原创 2020-02-26 12:04:01 · 891 阅读 · 0 评论 -
Android Studio升级到3.0版本后布局不能预览解决方案
听说Studio3.0稳定版发布了,过断选择了升级,然后升级后项目中的布局不能预览了,我去,什么鬼,过段百度了下,找了好久,没合适的答案,但是功夫不负有心人,今天早上直接复制Studio上报的错误(英文版)进行搜索,完美解决,现在分享出来给大家。1、错误提示 Failed to instantiate one or more class2、解决方案将style中 进行如下改变原创 2017-10-30 10:11:44 · 13493 阅读 · 6 评论 -
使用Material Design实现沉浸式状态栏+悬浮+渐变效果实现
前言近期发现市面上很多App都采用了沉浸式状态栏效果,近期抽时间使用Material Design控件实现了一个,故记录分享代码实现1、添加Material Design依赖 implementation 'com.android.support:design:27.1.1'2、布局搭建<?xml version="1.0" encoding="utf-8"?...原创 2018-08-01 16:34:49 · 1522 阅读 · 0 评论 -
使用RecyclerView自定义实现二级联动列表
一、需求分析单各list列表实现很简单直接使用RecyclerView填充列表即可,那么多级列表该怎样实现呢,同样很简单,只需监听第一级列表的item点击事件再填充第二级列表即可实现。二、代码实现1、创建布局文件由两个RecyclerView填充布局,左右分布<?xml version="1.0" encoding="utf-8"?><LinearLayou...原创 2018-07-27 14:15:58 · 3572 阅读 · 1 评论 -
腾讯X5WebView集成使用
工作中经常涉及H5网页的加载工作,最多使用的就是安卓系统控件WebView,但是当网页内容比较多的时候,需要等待很久才能加载完,加载完后用户才能看到网页中的内容,这样用户需要等很久,体验很差。那能不能边加载边显示呢,通过搜索发现腾讯X5WebView可以实现,相对体验要好很多,况且手Q、微信、QQ浏览器使用的该插件,故值得一试。步骤如下:一、下载jar包及so文件分别放到libs和jniLibs文原创 2018-01-18 17:49:36 · 18052 阅读 · 4 评论 -
Java与Js互调
现在越来越多的应用涉及到java与H5的混合开发,所以java与js的互调会经常使用,下面简单介绍下基本使用方式一、java调用jsjava调用js主要通过WebView中loadUrl()方法进行调用1、通过如下设置启用javaScript// 启用javascript mWebView.getSettings().setJavaScriptEna原创 2017-11-14 15:15:30 · 2428 阅读 · 0 评论 -
混淆后APK百度地图不能正常使用问题分析
近日代码混淆后地图突然间不能正常使用,经过测试分析发现问题,总结如下:1、百度地图注册AK时使用的是debug.keystore签名文件生成的SHA1值与release包使用的签名文件不同,导致SHA1值不同导致此时需要重新使用release包签名文件获取SHA1值进行申请AK即可。生成方式如下:2、另外一种就是混淆配置导致,也就是将不该混淆的文件进原创 2018-01-22 11:46:05 · 572 阅读 · 0 评论 -
android实现app国际化
随着公司发展,要进行app国际化,顺便弄个小Demo,分享给大家 经过调研,目前实现国际化的方式有两种:1、一种是安卓系统自己根据手机选择的语言加载values文件夹下相对应strings文件2、一种是通过手动设置实现下面一个个来实现一、通过安卓系统自己根据手机选择的语言加载values文件夹下相对应strings文件首先我们要创建响应的strings文件,studio中操作如下: 我以韩国为例原创 2017-12-11 16:34:49 · 2113 阅读 · 0 评论 -
Lottie动画框架入门及源码简析
动画框架Lottie入门及源码简析原创 2017-10-26 17:03:51 · 823 阅读 · 0 评论 -
仿小黄车头部滚动消息动画
前段时间看小黄车头部有个滚动的消息条目动画,而且可以点击收起,于是抽空实现了下,具体如下 先上效果图 1、分析通过观察,发现该布局由一个图片,一个文字组成,并且通过点击图片,会有一个伸缩的动画,也就是将文字隐藏的效果。文字的滚动通过跑马灯效果来实现2、布局<LinearLayout android:layout_width="wrap_content" android:layou原创 2017-11-03 17:20:10 · 718 阅读 · 0 评论 -
IntetntService基本使用及源码解析
一、简介 IntentService is a base class for {@link Service}s that handle asynchronous * requests (expressed as {@link Intent}s) on demand. Clients send requests * through {@link android.content.C...原创 2018-08-02 16:04:56 · 318 阅读 · 0 评论 -
Android Service梳理
1、Context.startService()生命周期onCreate、onStartCommand、onDestroy停止service对应方法 stopService、stopSelfSTART_STICKY正常情况下只有当手动调用stopSelf或者stopService时才会关闭,内存不足关闭后会自动重启START_NOT_STICKY、只有当前进程保持接收命令的时候才会...原创 2019-03-01 14:03:43 · 505 阅读 · 0 评论 -
LruCache缓存机制
LruCache缓存机制基本使用:// 设置lruCache缓存大小 int maxLruCache= (int) (Runtime.getRuntime().maxMemory()/8); LruCache&lt;String,Bitmap&gt; lruCache=new LruCache&lt;String, Bitmap&gt;(maxLruCache){ ...原创 2019-03-01 14:58:12 · 636 阅读 · 0 评论 -
android软件版本更新
版本更新//获取版本号 version_code = UpdateBean.getData().getVersion_code(); //获取下载地址 download_url = UpdateBean.getData().getDownload_ur原创 2017-04-07 20:18:56 · 340 阅读 · 0 评论 -
QQ分享纯图片
分享纯图片private fun onClickShare() { val params = Bundle() params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL,imageUrl.text.toString()) params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appNa...原创 2019-09-03 17:56:54 · 1519 阅读 · 0 评论 -
Jenkins+Gradle+Gitlab+蒲公英 +打包成功后发送邮件配置
一、配置全局属性 Environment variablesANDROID_HOME SDK路径/Users/lejumobile/Library/Android/sdkGRADLE_USER_HOME/Users/lejumobile/Library/Android/gradle/gradle-4.7二、配置jenkins地址Jenkins Location 路...原创 2019-07-19 15:10:33 · 802 阅读 · 0 评论 -
Android热修复-Tinker简析
一、简介日常工作工作中难免会遇到项目上线后出现bug问题,如果紧急发版往往由于渠道审核时间问题,导致bug修复不及时,影响用户体验。这时我们需要引入热修复,免去发版审核烦恼。热更新优势:让应用能够在无需重新安装的情况实现更新,帮助应用快速建立动态修复能力。轻量而快速的升级,无需发版远端调试,,可以将补丁推送给指定用户可以通过patch使用户安装两个不同的版本,埋点进行数据统计局限...原创 2019-04-09 18:44:33 · 900 阅读 · 0 评论 -
常见String样式格式化汇总
1、StringFormat在Strings文件中创建string标签,通过%1s!代替string字符,s!代替string字符,%2s!代替string字符,d代替int字符,进行格式化<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>使用案例btn...原创 2019-03-18 17:43:05 · 863 阅读 · 0 评论 -
IPC之Messenger传递数据
一、基本使用使用messager通信是基于binder途径进行传递数据,和AIDL类似,都是通过客户端绑定服务的形式实现数据传递步骤如下:1、在 manifest中注册服务,作为远程服务&lt;service android:name=".service.RemoteService" android:enabled="true" android:exported="true...原创 2019-03-14 19:32:26 · 473 阅读 · 0 评论 -
BroadcastReceiver和LocalBroadcastManager
BroadcastReceiver1、发送和接收广播 // 全局广播 // 发送 val intent = Intent() intent.action=ActionConstant.ACTION_ONE intent.putExtra("EXTRA", "全局广播") sendBroadcast(inte...原创 2019-03-04 10:58:52 · 395 阅读 · 0 评论 -
sharedPreferences使用及缓存机制分析
日常开发中经常使用sharePreference存储数据,非常简单快捷,下面我们将对此进行分析一、基本使用封装工具类方便调用class SpUtils{ private val context:Context=MyApplication.instance() private val sp:SharedPreferences=context.getSharedPreferenc...原创 2019-03-06 18:42:01 · 2730 阅读 · 0 评论 -
Activity生命周期、启动模式和startActivity源码分析
一、生命周期oncreate()、onStart()、onResume()、onPause()、onStop()、onDestory()、onRestart()、onNewIntent()二、启动模式Standard()每次启动activity都会在栈中创建一个新的实例SingleTask()每次启动activity都会判断栈中有没有该activity实例,如果没有则创建新的activ...原创 2019-03-05 17:38:54 · 658 阅读 · 0 评论 -
Studio多渠道打包
APP上线要发多个渠道,一个个打包必然浪费时间,所以我们要采用多渠道打包的方式,简单配置下so Easy 代码如下:1、在清单文件中配置 <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/>2、在app下gradle中配置,以小米、原创 2017-06-23 19:26:26 · 246 阅读 · 0 评论 -
android仿微信识别相册中二维码图片信息
仿照微信识别相册中二维码,写了一个Demo,供参考使用1、添加依赖,基于zxing,使用了Glide选择的图片进行了显示 compile 'com.google.zxing:core:3.2.1' compile 'cn.bingoogolapple:bga-qrcodecore:1.1.3@aar' compile 'cn.bingoogolapple:bga-zx原创 2017-08-31 15:08:19 · 4080 阅读 · 4 评论 -
android二级接口回调实现
接口回调工作中使用的很多,逻辑比较复杂的需要涉及多级回调,下面就写一个简单的二级回调栗子。1、需求:在A类中点击按钮,回调B类中的方法来改变A类中textView的内容,而第二个类中保存的变量需要通过C类中的方法来获得数据,简单的逻辑已经梳理清楚简图:2、定义一个接口,接口中定义两个方法,分别用于C类向B类中传递数据和B类将获取到的数据赋值给A类中变量、public int原创 2017-09-07 13:55:56 · 831 阅读 · 0 评论 -
字符串去除空格和回车
java去除字符串中的空格、回车、换行符、制表符 跳至 [1] [全屏预览]import java.util.regex.Matcher;import java.util.regex.Pattern; public class StringUtils { public static String replaceBlank(String str) { S原创 2017-04-24 10:34:28 · 12176 阅读 · 2 评论 -
使用LeakCanary进行项目内存泄漏处理
1、添加依赖debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'2、在application中进行配置加在onCreate()前 //初始化LeakCanary原创 2017-04-11 17:21:34 · 585 阅读 · 0 评论 -
疯狂Toast,解决多次toast连续弹出现页面卡顿现象
首先判断是否具有toast实例,具有的话就不再创建toast实例,直接改变吐司内容,最终实现疯狂Toast private Toast toast=null;protected void showShortToast(String text) { if (toast==null){ toast=Toast.makeText(getApplicati原创 2017-03-15 16:02:39 · 1504 阅读 · 1 评论 -
二维码扫描重复扫描实现之handler延时实现
二维码扫描集成Zxing后,无法实现重复扫描功能,试了几种方法,最后发现用在扫描失败后用handler发送一个delay方法,重启camera就能实现详见代码//重新开始扫描 private void restartCarema() { handler.postDelayed(new Runnable() { @Override public void run() {原创 2017-03-07 13:25:21 · 1230 阅读 · 0 评论 -
Studio配置git忽略文件
.gradle/local.properties/.idea/workspace.xml/.idea/libraries.DS_Store/build/captures.externalNativeBuild*.apk*.ap_# Files for the Dalvik VM*.dex# Java class files*.class# Generated fi原创 2017-03-23 13:30:09 · 357 阅读 · 0 评论 -
登录页重写返回键,防止退出登录后按返回键重新进入程序
重写loginActivity返回键原创 2017-04-07 20:04:29 · 1249 阅读 · 0 评论 -
GridView实现多项选择
简单说下思路吧, 设置boolean值标记,通过gridView的条目点击记录下被点击的条目,改变被点击条目的背景色即可实现设置boolean标记 private boolean FaultBodyChoiced,FaultHandleBarChoiced,FaultChainChoiced,FaultwheelChoiced,FaulElockChoiced;//创建集合存储被点击的原创 2017-04-07 20:33:02 · 486 阅读 · 0 评论