android杂学(一)

1.进行monkey测试 adb shell monkey -p 包名 次数
monkey runner测试

2.gradle命令
gradlew tasks //列出所有的任务
gradlew clean build //先clean然后build任务

3.使用debug的时候,进行修改运行时候的变量。
在这里插入图片描述
选中后,可以使用右键setValue进行修改数值。或是直接使用f2快捷键进行修改。

4.选中代码右击使用refactor–>extract–>等等进行重构代码 最常用的是抽取function,可以使用快捷键alt+shift+Q

5.Jvm , Dalvik ,ART(android runtime)虚拟机
在Jvm是javeSE虚拟机,是基于栈的设计
Dalvik虚拟机是基于寄存器设计,这样就不用使用大量的出入栈的指令。并且基于寄存器的指令要比基于栈的指令要大,但是由于指令数量的减少,总的代码数量并不会增加。会在执行的时候将字节码转化成本机代码。这样会有两个好处:①消除了那些纯解释型虚拟机的开销②能对本机代码执行优化。Dalvik在第一次加载的时候会生成Cache文件,在下次启动的时候就会比较快,但是在第一次启动就会很慢。
ART:在android4.4后就推出了ART虚拟机,并且android5.0后默认采用了ART.他会在第一次安装的时候就会将字节码转化成本机代码,这个过程就是预编译(AOT Ahead of time)在转化成本机代码的时候,体积会更大。但是因为空间换时间的办法,使其运行速度更加的快,更加的省电。

在Dalvik虚拟机在开机的时候会启动一个zygote的进程,该进程会创建Dalvik实例, 这个实例会创建其他的实例。当应用程序启动的时候,zygote就会收到一个创建新虚拟机实例的请求,并给该应用程序创建一个新进程,这样就能避免一个应用程序的崩溃导致其他应用程序的崩溃。

6.线程安全的队列,这样在面对多线程中的集合的使用,就可以使用下面的类
LinkedBlockedQueue 只能允许一端进入一端出
LinkedBlockedDeque 支持双端进出

7.在保证线程安全的时候,我们经常使用synchronized关键字,但是很容易滥用,而导致对性能的负面影响。如果需要区分数据的读写数据时,就可以使用ReentrantReadWriteLock,它允许多个并发线程对数据进行访问,但是保证同时只有一个线程能够读写数据。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yuezheyue123/article/details/82967957