平时我们所讲的
手机屏幕大小是手机的对角线长度,一般单位为英寸,1英寸为2.54厘米。
像素是想象把屏幕放大出现的一个个小圆点或小方块
分辨率是指屏幕上垂直方向和水平方向上的像素个数 :比如iPhone5S的分辨率是1136*640
dpi指的是每英寸的像素数,也叫做屏幕密度,这个值越大,屏幕越清晰。
使用sp作为字体大小单位,会随着系统的字体大小改变
而dp作为单位则不会.
Android的项目依赖有一种远程库依赖
比如app需要依赖下面这个远程库,
dependencies {
compile 'com.etsy.android.grid:library:1.0.5'
}
这样定义了, 去哪里拿到库工程的代码和资源文件呢,肯定是要从某个源去获取。
jcenter是一个声明仓库的源,之前版本则是mavenCentral(), jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。
so库
.so文件是Linux系统的可执行文件,相当于windows上的exe执行文件,只可以在Linux系统运行。 so文件就是常说的动态链接库,都是C或C++编译出来的。 与Java比较就是:它通常是用的Class文件(字节码) Linux下的.so文件时不能直接运行的。一般来讲,.so文件称为共享库。
- so机制让开发者最大化利用已有的C和C++代码,达到重用的效果,利用软件世界积累了几十年的优秀代码;
- so是二进制,没有解释编译的开消,用so实现的功能比纯java实现的功能要快;
- so内存分配不受Dalivik/ART的单个应用限制,减少OOM;
- 相对于java代码,二进制代码的反编译难度更大,一些核心代码可以考虑放在so中。
jar文件
JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件非常类似 ZIP 文件——准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。
jar包 里面是别人写好的java代码, 里面的类可能实现了你想要的功能, 这样用别人的jar包就不用自己再写一次相同功能的代码了.
总结
jar相当于静态库,so相当于动态库文件。
静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。
动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。
区别
ABI
每一种CPU架构,都定义了一种ABI(Application Binary Interface,应用二进制接口),ABI定义了其所对应的CPU架构能够执行的二进制文件(如.so文件)的格式规范,决定了二进制文件如何与系统进行交互。每一个Android应用所支持的ABI是由其APK提供的.so文件决定的,这些so文件被打包在apk文件的lib/目录下
android:allowBackup
Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBackup属性值[1] ,其属性值默认是true。当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。
由于Application类是在APP启动的时候就启动,启动在所有Activity之前,所以可以使用它做资源的初始化操作,如图片资源初始化,WebView的预加载,推送服务的注册等等,注意不要执行耗时操作,会拖慢APP启动速度。
在非UI线程中其实可以更新UI,前提是要有自己的ViewRoot,而ViewRoot是在onResume()方法里的addView()创建的,所以在onResume()中判断是否为UI线程,在onCreate()中可以通过子线程来刷新UI的(试验:如果子线程sleep(2000),就会报在非UI线程中刷新UI的错误了 )。
Android App之间共享SharedPreference
在AndroidManifest.xml中的manifest标签,我们需要设置两个APP的sharedUserId,如下:
<manifest xmlns:
android="http://schemas.android.com/apk/res/android"
package="com.example.xiechen.sourceapp"
android:sharedUserId="xxcc.com">
Activity生命周期:
1、当第一次调用一个Activity就会执行onCreate方法