android杂记

本文介绍了Android的基础知识,包括屏幕尺寸、像素、分辨率、dpi的概念,以及sp和dp的区别。讲解了Android项目的远程库依赖、jcenter仓库和.so与.jar文件的作用。讨论了Android中的ABI、动态库与静态库的区别,以及Activity的生命周期、屏幕旋转、权限管理和App间数据共享。还提到了RecyclerView的更新方法和View的绘制过程,最后讨论了Bitmap的压缩、内存管理和 EventBus 使用。
摘要由CSDN通过智能技术生成

 

平时我们所讲的

手机屏幕大小是手机的对角线长度,一般单位为英寸,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方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值