自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单元测试之junit篇

简介关于单元测试的工具调研可以参考:https://km.sankuai.com/page/365031302在构建本地单元测试的时候,JUnit4测试框架是java标准测试库,junit测试框架可以让你在编写测试代码的中进行setup, 卸载, 和断言等操作。构建本地单元测试框架运行不需要依赖于真实设备或者模拟设备,可以通过Robolectric库来实现对Android系统框架的依赖,Robolectric库是可以兼容junit库的。通过junt4进行本地单元测试,不要依赖于android运行环境,

2020-12-20 14:04:49 399

转载 android芯片配置和参数的获取

【转发】https://blog.csdn.net/mozushixin_1/article/details/93724849用build直接获取参数Log.d("build","BOARD:" + Build.BOARD);Log.d("build","BOOTLOADER:" + Build.BOOTLOADER);Log.d("build","BRAND:" + Build.BRAND);Log.d("build","CPU_ABI:" + Build.CPU_ABI);Log.d("b

2020-11-26 21:46:20 913

原创 记Android studio启动的问题

问题:java.lang.NoSuchMethodError:com.intellij.ide.plugins.PluginManagerCore.getEnabledPluginRawList环境配置情况:Android Studio 4.0Build #AI-193.6911.18.40.6514223, built on May 20, 2020Runtime version: 1.8.0_242-release-1644-b3-6222593 x86_64VM: OpenJDK 64-B

2020-10-28 19:54:50 391 1

原创 单元测试调研

背景:单元测试为了保证代码质量、快速迭代的需求。在重构期间,可以尽可能的测试各种边界case。在开发阶段就可以尽快的发现问题,解决问题并验证解决方案的正确性。提高开发效率,在项目迭代的时候,随着功能的增加,代码量的递增,Android app的编译、运行时间也会变长,因此必要的单元测试是必须的。更多单元测试的概述:关于单元测试的概述调研分析:常见的测试工具:1、JUnit:Junit4是Java标准测试库。2、Mockito、PowerMock、Mockk: 这些是Java 单元测试 Mock

2020-07-23 12:44:56 329

原创 单元测试概述

概念单元测试是为了验证代码中某个类或者方法能否按照正常输入得到预期的输出。一个情况下我们会测试共有方法即public方法,如果需要测试私有方法,需要通过mokc的方式,才能测试,在实际开发中我们已经会编写一些工具类,如果没有单元测试的助力,我们在实际测试过程中,可能对边界值的测试不足,导致线上出现问题。通过单元测试,可以准确的保证应用的稳定性,和功能的正确性。随着应用模块的不断跟新迭代,测试单元也要跟着不断变化,保证应用模块的单元测试覆盖率以及迭代的稳定性。单元测试测试的主要范围是类的共有方法,保障公有

2020-07-12 12:12:40 568

原创 记-Android studio使用的小疑惑

问题:Skipped breakpoint because it happened inside debugger evaluation参考文档:https://stackoverflow.com/questions/47866398/skipped-breakpoint-because-it-happened-inside-debugger-evaluation-intellij-idehttps://samny.gitee.io/2020/05/05/Skipped%20breakpoint%2

2020-06-18 23:19:58 264

原创 LeakCanary 2.0原理分析

LeakCanary 2.0原理背景:Android应用基于Java(kotlin)实现,因此它也将Java的优缺点继承了过来,典型的极就是内存回收问题,JVM在GC上让开发者尽量不需要关注垃圾对象的回收,但是如果开发真的不去关注内存问题就有可能造成应用的内存泄漏和OOM。比如错误使用handler、thread等都可能会带来OOM。应用程序在申请一定的内存后,内存又没有及时得到释放后就很容易...

2020-03-19 18:32:22 2993

原创 Flutter Boost的router管理

环境FlutterBoost介绍咸鱼Flutter Boost介绍Flutter Boost Github混合开发环境搭建原生Android集成Flutter混合开发Flutter SDK版本:v1.9.1Flutter Boost 版本:flutter_boost: ^0.1.63FlutterBoost集成FlutterBoost是以插件的引入到我们的项目工程的。例...

2020-01-07 20:14:27 2291

原创 原生Android集成Flutter混合开发

原生Android和Flutter集成主要有两种方案:1.源码集成:官方提供的源码集成方案2.产物集成:Flutter 项目单独开发,开发完成后发布成 aar 包或者 iOS 的 framework 形式,原生项目依赖 Flutter 输出的文件即可。3.咸鱼团队的FlutterBoost 方案。FlutterBoost地址环境首先确认环境是否正确:这里重点关注一下Flutter ve...

2019-11-21 17:30:39 1807

原创 Koltin 之 动态代理InvocationHandler

Koltin的动态代理的坑。1.Kotlin中动态代理的实现。class DynamicProxy constructor(any: Any): InvocationHandler{ private val mAny: Any = any @Throws(Throwable::class) override fun invoke(proxy: Any?, method:...

2019-11-15 16:21:04 587

原创 Kotlin 之 const

变量和常量在kotlin语法中,修饰符var用来修饰可变变量,val修饰只读变量。关于val的只读属性而不是不可变属性,可以参考:val的只读属性但是Kotlin同时又提供了一个const修饰符。在开发过程中,如果我们在伴生对象中定义了一个val类型的变量,那么Android Studio会智能的提示开发者需要使用const来修饰该变量。const的特点const只能修饰val,不能...

2019-10-25 16:36:42 3737

原创 RxJava 线程切换原理

推荐推荐几篇在学习Rxjava中的阅读的文章。尤其是大神W_BinaryTree的文章,给学习过程中带来了不少启发。什么是函数响应式编程(Java&Android版本)函数响应式编程介绍Rxjava2.0 较全的Api介绍和使用,可以当作开发手册Rxjava2.0 Api介绍和使用Rxjava2.0 和1.0的主要区别Rxjava2.0 和1.0的主要区别Rxjava g...

2019-09-27 11:19:34 1868

原创 Android jetpack总结

背景在Android开发中经常面临的问题:(1)在应用程序(Activity、Fragment)的生命周期管理困难,尤其是Fragment的跳转带来的生命周期管理问题。(2)在Activity需要重新创建的时候,界面控制器中存储的数据丢失,需要重新初始化,影响用户体验。(3)在非UI线程去获取数据(DB,NetWork)时,在界面控制器被销毁后,界面控制器需要结束和任务的订阅关系,避免内存...

2019-09-04 18:58:46 1931

原创 Android jetpack的Paging和Room结合使用

介绍Paging主要是用来结合RecyclerView进行使用,是一种分页加载解决方案,这样Paging每次只会加载总数据的一部分。Room是Google提供的一个ORM库。本文的代码来自官方例子:官方示例地址使用Paging Room添加依赖 def room_version = "2.2.0-alpha02" implementation "androidx.r...

2019-08-24 19:32:19 1201

原创 Android Jetpack之WorkManager源码分析

Android Jetpack之WorkManager源码分析Android WorkManager简介WorkManger是Android Jetpack提供执行后台任务管理的组件,它适用于需要保证系统即使应用程序退出也会运行的任务,WorkManager API可以轻松指定可延迟的异步任务以及何时运行它们,这些API允许您创建任务并将其交给WorkManager立即运行或在适当的时间运行。...

2019-08-22 19:28:38 1479

原创 Android Jetpack之Navigation源码分析

Android Jetpack之Navigation源码分析Android Navigation简介关于Fragment的基础篇:Fragment基础篇使用Navigation管理APP页面跳转,Navigation多数作用于Fragment中,导航组件还支持:Fragment、Activity、导航图和子图、自定义目标。使用Navigation切换Fragment可以使代码简洁,直观。N...

2019-08-15 18:03:21 957

原创 Android Jetpack之LiveData源码分析

Android Jectpack之ViewModel源码分析LiveData的使用会结合Lifecycles和ViewModel一起使用,不了解二者的,建议先看这两篇文章:Android Jectpack之ViewModel源码分析Android Jectpack之Lifecycles源码分析ViewModel 简介LiveData 是保存数据对象的类,通过注册监听器Observer 监...

2019-08-07 19:32:39 350

原创 Android Jetpack之ViewModel源码分析

Android Jectpack之ViewModel源码分析ViewModel 简介在Android开发的时候,使用Activity、Fragment的生命周期的变动有时候是不受开发人员控制的(比如横竖屏切换,导致Activity销毁并重新创建),各种因素导致Android界面或被系统重新创建。当Activity需要重新创建的时候,之前与之绑定的数据也会丢失(比如EditText上输入的数据或...

2019-08-06 16:44:23 763

原创 Android Jetpack之Lifecycles源码分析

Android Jectpack之Lifecycles源码分析Android Jetpack简介Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。Jetpack 包含与平台 API 解除捆绑的 androidx.* (android.*)软件包库。这意味着,它可以提...

2019-08-03 14:52:08 466

转载 Android Studio多Module使用aar编译报错的解决方案

原文链接:Android Studio多Module使用aar编译报错的解决方案AAR Format在 Android Studio 之前,如果用引用第三方的库,一般使用 jar 包,它只包含了class,没有包含对应的资源、so库等,所以引用起来就不方便,特别是一些 UI 库,第三方在使用的时候,还需要自己单独导入对应的资源(字符串、图片等)。现在 Android 中引入了 aar ...

2018-07-21 14:15:54 1221

原创 构建本地Jcenter、上传AAR、jar、plugin到本地Jcenter

如何构建本地Jcenter、以及上传AAR、jar、plugin到本地Jcenter文章主要介绍: (1)如何搭建本地的Jcenter仓库 (2)如何上传AAR、jar、Plugin到本地仓库 (3)如何引用自己上传的AAR、jar、Plugin (4)如何创建仓库的group,通过group可以将jcenter、maven、alibaba、google、以及自己创建的仓库等聚集一起,...

2018-07-14 14:30:34 1049

原创 自定义ProgressBar实现两端都是圆角,并且带有Animation。

1.实现效果2.使用到的知识点ValueAnimator的使用,具体产考文档:ValueAnimator 基本使用ScaleDrawable的使用。具体参考文档:ScaleDrawable的使用3.通用的做法使用Style实现3.1自定义 ProgressBar先从主界面布局开始看起 <ProgressBar style="@and...

2018-04-06 15:25:07 2651

原创 ListView实现隐藏,显示Item的部分View.以及部分问题

实现的功能1.实现动态显示,隐藏ListView的Item部分View.效果如下图所示: 点击右侧的隐藏,显示按钮,实现Item的部分布局的动态显示.涉及到的知识点1.inflate方法的不同参数的含义,以及作用 2.View的绘制过程,主要包含onMeasure,onLayout,onDraw这三个方法. 3.自定义View. 4.如何控制Item的部分布局的显示,隐藏.如何控制Item的

2017-04-30 15:45:57 11769

转载 彻底解决魅族手机无法彻底卸载应用的bug

使用Flyme系统的同学可能会遇到一个问题:卸载了某些软件(例如通过开发者模式调试安装的应用)后,实际这个应用还残留在系统,当你用低版本或者其他签名的apk覆盖安装的时候会提示“安装失败”,要求你卸载后重新安装。可是无论你从应用列表寻找还是清理垃圾,都根本找不到这个应用。Step1:进入手机的“设置”-“安全” (指纹和安全)Step2:选择“访客模式” Step3:打开访客模式,并记住密码 S

2016-10-31 20:18:58 3920

转载 Android的setVisibility(View.GONE)不起作用在使用Animation之后.

出现这种情况很可能是因为设置了animation,并且调用了setFillAfter(true),这就会导致setVisibility无效,只需要调用一下clearAnimation()方法或者去掉setFillAfter(true)语句即可。实验证明只要在setVisibility之前设置View的mCurrentAnimation为null就可以,因此调用setAnimation(null)也是

2016-10-20 20:35:27 5683 1

原创 android6.0权限管理

android6.0的全新的权限管理机制简介不知不觉android已经出了android7.0的预览版了。但是android6.0的普及程度不高,比例没有超过2%. 但是Android6.0权限管理比较之前的版本有了很大的改进。android的权限系统一直是首要的安全概念,因为这些权限只在安装的时候被询问一次。一旦安装了,app可以在用户毫不知晓的情况下访问权限内的所有东西。但是

2016-10-10 19:26:57 420

原创 RecycleView隐藏部分Item

最近遇到一个业务需求,就是读取手机里面的所有的视频文件,并且根据文件所在的文件夹进行分类.效果图如下:打点击左侧的按钮实现展开和收起.具体的实现代码如下:public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ ... public void setVi

2016-10-10 19:18:21 17681 6

原创 Linux下安装Google Chrome浏览器

以下为64位版本,使用下面的命令。step1:wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.debsetp2:安装命令:sudo dpkg -i google-chrome-stable_current_amd64.debFAQ: 根据错误提示安装libxss1依赖包: sudo apt-ge

2016-07-21 18:47:53 2470

原创 Android 多渠道打包

Android 的Gradle多渠道打包配置AndroidMainfest.xml以友盟渠道为例,渠道信息一般都是写在 AndroidManifest.xml文件中,代码大约如下:<meta-data android:name="UMENG_CHANNEL" android:value="xiaomi" />如果不使用多渠道打包方法,那就需要我们手动一个一个去修改value中的值,xiaomi,36

2016-06-22 17:58:55 7105 2

原创 Android N 第四个开发者预览版更新,即最终版 API 和 SDK 发布

昨天Google官方推出了Android N的第四个预览版,相比前三个预览版,SDK和API最终定型。新的版本全名叫作Android N Dev Preview 4。 今天Android N 第四个开发者预览版更新,即最终版 API 和 SDK 发布!开发者可以更新 SDK 并将应用的 compileSdkVersion 和 targetSdkVersion 设置为 24 进行开发测试。随着终版

2016-06-17 10:53:14 935

原创 Monkey、MonkeyRunner自动化测试文档

Monkey测试文档Monkey介绍:Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。Monkey的特征1、 测试的对象仅为应用程序包,有一定的局限性。 2、 Monky测试使用的事件流数据流

2016-06-05 16:56:16 6823

原创 Android studio 修改工程的包名

最近为了修改Android的包名称废了半天得劲,特此记录下来。 错误的修改方式:以为可以直接通过右键Refactor然后raname就可以,发现并不可以。如图所示: 正确的做法: 然后在修改包名: 修改完成以后,注意修改一下Application Id 最后rebuild project即可。

2016-06-04 16:09:07 737

原创 Session 'app': Error Launching activity

更新Android studio2.0以后,运行程序会出现Session ‘app’: Error Launching activity错误。在控制台的输出日志是: 解决办法: 在setting里面找到instant run 然后将instant run设置为disabled .如图所示: 参考文档: http://stackoverflow.com/questions/3653

2016-05-17 11:38:31 15725 4

原创 HashMap原理和代码浅析

hashCode介绍分析HashMap之前先介绍下什么Hashcode(散列码)。它是一个int,每个对象都会有一个hashcode,它在内存的存放位置是放在对象的头部(对象头部存放的信息有hashcode,指向Class的引用,和一些有关垃圾回收信息)。需要注意的是,如果在你的类中覆盖了Object的equals(Object)方法,那么你必须覆盖hashCode方法,不然,当你使用HashMap

2016-05-09 20:40:02 2792

转载 BroadcastReceiver

前些天把四大组件之一的Service扯了一遍,今天就要开始谈谈它的弟兄BroadcastReceiver了。写到这里我挺纠结的,因为广播接收者确实比较简单,但是各位就不要以为简单的就不内涵,也许我们慢慢探讨一下还能有另外一片天地。  惯例还是先会介绍一下基础的知识,后面会说说关于BroadcastReceiver的接收顺序还有其他的一些小知识。BroadcastReceiver的概念

2016-04-24 17:35:24 373

原创 java ArrayList集合分析

一、 ArrayList概述:本文的源代码分析基于的JDK版本是1.8. ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。 ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用co

2016-04-24 17:11:38 3640 1

原创 android在Bubug模式下使用签名

我们在做百度地图定位的时候在debug模式下调试是无法显示出具体的定位信息的,其他的例如微博分享,微信分享也是,因为要使用对应的签名版本才能调用sdk成功。 那么我们只需要在AndroidStudio的Gradle中简单的配置一下就可以使用应用签名了1.在Gradle中引入如下代码://配置keystore签名signingConfigs { release { stor

2016-04-20 19:34:11 476

原创 Android的布局ViewStub

简介:ViewStub是一个不可见的,能在运行期间延迟加载的大小为0的View,它直接继承于View。当对一个ViewStub调用 inflate()方法或设置它可见时,系统会加载在ViewStub标签中引入的我们自己定义的View,然后填充在父布局当中。也就是说,在对 ViewStub调用inflate()方法或设置visible之前,它是不占用布局空间和系统资源的。它的使用场景可以是在我们需要加

2016-04-07 15:42:40 885

原创 Linux系统下JavaJDK,Eclipse,Androrid studio的安装教程

本文将带领大家在Linux系统下面安装Java开发,android开发环境。准备工作Ubuntu系统的安装可以参考博客: http://blog.csdn.net/u011060103/article/details/50850834JDK下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2

2016-03-27 16:19:42 807

原创 android自定义验证码倒计时View

关于自定义View的构造方法里面的参数的含义可以参考: http://www.cnblogs.com/angeldevil/p/3479431.html代码:倒计时类:public class CountDownBtn extends Button implements View.OnClickListener{ private static final String TAG = C

2016-03-25 17:35:24 731

空空如也

空空如也

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

TA关注的人

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