0%

本文旨在简单介绍说明 Monkey 及其参数,内容不一定完全正确,本文将随着实践及源码阅读深入而更新。

Monkey Test 是一个 Android 系统内置的工具,用来进行稳定性测试。它通过向系统注入伪随机的用户事件流(如点击、触摸、手势以及系统级的事件)来进行压力测试。

  • Monkey 在 Android 系统中的存放路径是:/system/framework/monkey.jar
  • Monkey 命令脚本在 Android 系统中的存放路径是:/system/bin/monkey
  • Monkey 源码在 aosp/development/cmds/monkey

基本使用

Monkey 运行在 Android 设备上,所以要使用设备上的 shell 来启动。

adb shell monkey [options] <event-count>

一个典型的命令如下所示:

1
adb shell monkey -p com.android.contacts --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -- ignore-native-crashes --monitor-native-crashes --kill-process-after-error -v -v -v 1200
阅读全文 »

不建议在知识深度广度不够的时候尝试深入理解当前版本的 Android 的内存管理机制,如果一定要这样做,请考虑候世达定律

所谓内存管理,就是指内存资源的分配、使用、释放与回收。在 Android 中指的就是对象分配与垃圾回收的过程。

老罗的Android之旅博客中对相关的内容有很深入的解析,篇幅宏大。以下内容为学习相关内容博客的摘要,想了解更多或对本文有不理解的地方请移步老罗的博客,下文给了参考的具体博客的文章链接。

Dalvik 虚拟机的内存机制

因为 Dalvik 虚拟机的内存机制相对比较简单,并且与 ART 使用了共同或相通的技术,所以先理解 Dalvik 下的内存机制。

参考链接:

  1. Dalvik虚拟机垃圾收集机制简要介绍和学习计划
  2. Dalvik虚拟机堆的创建过程
  3. Dalvik虚拟机的对象分配过程
  4. Dalvik虚拟机的垃圾收集过程
阅读全文 »

这篇文章为学习了 GitChat 文章:作为面试官,如何考察工程师的软素质所做的笔记,摘要了其分享的软素质模型,该文章内容给了我比较大的启发。有兴趣的同学可以进原链接 1 元购买查看完整内容。

软素质模型

最核心的是自驱力,它是一个人内在的东西,是一个人成长的源动力,自驱力好的人一定更有潜力。

其次是好奇心和学习能力,技术日新月异的今天,一个人如果不对不断变化的世界保持好奇心,且不断学习精进,很可能会跟不上节奏。你必须不停地奔跑,才能保持在原地。

最后就是沟通表达能力、技术规划能力和总结复盘能力。良好的沟通表达能力不仅对个人发展有着至关重要的作用,对团队合作也大有裨益。技术规划能力强的人对问题往往理解的比较深刻,且目标感很强,更容易获得好结果。总结复盘能力能够帮助你找出自己的不足,并形成方法论去指导后面的工作。

阅读全文 »

标题党一回,实际上这是一个关于注解、反射及简单使用的学习整理。当然,在常用框架:Dagger2、ButterKnife、Retrofit中也确实可以看到注解的身影,注解想必大家是很熟悉的,例如 Java 自带的注解 @Override@Depressed@SuppressWarnings,在日常开发中,使用框架时经常使用到其自定义的注解,注解让框架的使用看起来更简单明了。

以下是一个简单的例子,天气应用中定位当前城市时使用 EasyPermissions 获取定位权限后,执行该方法:

1
2
3
4
5
6
7
8
9
10
@AfterPermissionGranted(10010)
private void getLocationWithCheckPermission() {
  String[] perms = {Manifest.permission.ACCESS_FINE_LOCATION};
  if (EasyPermissions.hasPermissions(this, perms)) {
    getCurrentPosition();
  } else {
    EasyPermissions.requestPermissions(this,
        null, 10010, perms);
  }
}

EasyPermissions 中有着唯一的一个注解 @AfterPermissionGranted,它的使用场景也很简单,用它来修饰方法,该方法在声明的权限被用户所授予之后执行。就这样简单的声明之后,就可以达到一种特定的效果。

阅读全文 »

Android Studio 3.0 正式版本已经发布许久,公司的多个项目也需要升级工具并且更新项目的 Gradle 了。先跟着官方的升级说明学习一下。以下为部分内容的摘要,更多内容还请查阅:

Gradle 4.1

Gradle 4.1 开始支持 Google 的 Maven 仓库了,只需要在仓库列表中添加 google() 即可。最新的 gradle Android plugin 也是通过这个仓库下载的。

1
2
3
4
5
6
7
8
9
buildscript {
repositories {
google()
...
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}

记得,把 gradle 相应的版本更新一下:

distributionUrl = https\://services.gradle.org/distributions/gradle-4.1-all.zip

阅读全文 »

在公司因为需要源码编译,使用的是 Ubuntu 开发,在宿舍里也同样如此。随着应用开发的比重增加,需要源码环境的时候也少了。是时候尝试一波 Deepin 了!

在武汉上学的时候就听说了这个系统。今晚就安装一下,做一个记录。

安装

从官网下载,并遵循原生安装步骤进行安装。

Shadowsocks

安装完成之后,Shadowsocks 一定是要安装的。Deepin 15.5 版本中,可以直接获取 Shadowsocks:

1
sudo apt-get install shadowsocks-qt5

安装完成之后,填入自己的账号即可。

阅读全文 »

应用的图标可以分成两类,一类是小图标,一般带 ic 前缀,另一类就是相对比较大的。大图不用说,一般是 UI 给的什么样子就用什么样子的,对于小图,可能修改的时候只涉及到颜色的改变。如果改个颜色就让 UI 重新切图,这是没有必要的,白白浪费了沟通的成本。

一般来说,涉及到风格变化,如果是采用改变 icon 的颜色的方式,以下管理方法是合适的。

Toobar 溢出菜单颜色

1
<item name="android:textColorSecondary">@color/color_clock_accent</item>

改变这个属性就可以改变那三个点的颜色。

阅读全文 »

方案二:DragSelectRecyclerView

扩展的选择策略

之前提到,方案二是基于方案三进行扩展的,可以看到,在 OnItemTouchListener 这一块,两者其实几乎是一模一样的。而方案二一个很好的地方,就是在几乎不修改 DragSelectTouchListener 的前提下,对其选择功能进行了强大方便的扩展。下面我将从设计的思路出发,理一理是怎样完成的。

首先要清楚方案二扩展了哪些选择策略,总共有 4 种模式:

  • Simple: 滑过时选中,往回滑时取消选中
  • ToggleAndUndo: 滑过时反选,往回滑时恢复原状态
  • FirstItemDependent: 反选按下的第一条目,滑过时与第一条目状态一致,往回滑时与第一条目状态相反
  • FirstItemDependentToggleAndUndo: 反选按下的第一条目,滑过时与第一条目状态一致,往回滑时恢复原状态
阅读全文 »

方案三: AndroidDragSelect

前文说到,方案三就是分析了方案一的缺点之后,给出了自己的基于 OnItemTouchListener 的实现方案,耦合度低,可以很容易集成进现有的项目当中。

从自定义 RecyclerView 的方案中可以看到,它是在事件分发的时候进行处理。事实上,在这个方法里做计算感觉上就有点不对,从源码来看,RecyclerView 本身是没有重写 dispatchTouchEvent() 方法的,而方案一通过重写此方法并在这里完成自动滚动的计算处理,显得有些重。

回顾一下事件分发机制,其中 dispatchTouchEvent() 用来进行事件的分发,onInterceptTouchEvent() 被前一个方法调用,用来进行判断是否进行拦截,真正地处理点击事件则是在 onTouchEvent() 当中。所以方案三就是利用了 RecyclerView 的 OnItemTouchListener 来对触摸事件进行拦截处理。

阅读全文 »

为什么要做滑动多选?

废话啊,当然是因为 UE 说要做啦!

可以看到众多 ROM 的系统应用都实现了滑动多选的功能,例如三星的文件管理器,OPPO 的短信等等,不知道来源是不是 Google 相册。因为交互上与 Google 相册的策略都是一致的。

Photos 的策略

这里是 Google Photos 的效果:

Photos

阅读全文 »