Android基础笔记

504 阅读5分钟
Runtime Exception主要包括以下这些:
ArithmeticException, 算术异常
ArrayStoreException, 将数组类型不兼容的值赋值给数组元素时抛出的异常
BufferOverflowException, 缓冲区溢出异常
BufferUnderflowException, 缓冲区下溢异常 
CannotRedoException, 不能重复上一次操作异常 
CannotUndoException, 不能撤销上一次操作异常
ClassCastException, 类型强制转换异常
ClassNotFoundException  类没找到时,抛出该异常
CMMException, CMM异常
ConcurrentModificationException,  对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出异常
org.springframework.jdbc.CannotGetJdbcConnectionException  服务器端数据库连接不上时,抛出该异常
CannotGetJdbcConnectionException  网络没有连接或网络中断
DOMException, DOM异常
EOFException, 文件已结束异常 
EmptyStackException, 空栈异常
FileNotFoundException, 文件未找到异常
IllegalArgumentException, 传递非法参数异常
IllegalMonitorStateException, 
IllegalAccessException,    访问某类被拒绝时抛出的异常
IllegalPathStateException, 非法的路径声明异常
IllegalStateException, 非法声明异常
ImagingOpException, 成像操作异常
IndexOutOfBoundsException, 下标越界异常
IOException, 输入输出异常
NegativeArraySizeException, 数组负下标异常
NoSuchMethodException 在类中无法找到某一特定方法时,抛出该异常
NoSuchElementException,    方法未找到异常
NoSuchFieldException 类不包含指定名称的字段时产生的信号(bean中不存在这个属性)
NumberFormatException, 字符串转换为数字异常
NullPointerException, 空指针异常
ProfileDataException, 没有日志文件异常
ProviderException, 供应者异常 
RasterFormatException, 平面格式异常
SecurityException, 违背安全原则异常
SQLException, 操作数据库异常
SystemException, 系统异常
UndeclaredThrowableException,
UnmodifiableSetException, 
UnsupportedOperationException, 不支持的操作异常


clearTaskOnLaunch:启动时清除任务,每次返回activity时,改activity上的所以activity都将被clear,即清除其他activity,保留自己

finishTaskOnLaunch:启动时结束任务,当离开这个activity所在的task,那么用户再返回的时候,该activity都会被finish,即清除自己,保留其他activity

alwaysRetainTaskState:始终保留任务状态,始终保留自己

Android 进程类型

  • 前台进程

用户当前操作所必需的进程。如果一个进程满足以下任一条件,即视为前台进程: 托管用户正在交互的 Activity(已调用 Activity 的 onResume() 方法) 托管某个 Service,后者绑定到用户正在交互的 Activity 托管正在“前台”运行的 Service(服务已调用 startForeground()) 托管正执行一个生命周期回调的 Service(onCreate()、onStart() 或 onDestroy()) 托管正执行其 onReceive() 方法的 BroadcastReceiver 通常,在任意给定时间前台进程都为数不多。只有在内存不足以支持它们同时继续运行这一万不得已的情况下,系统才会终止它们。 此时,设备往往已达到内存分页状态,因此需要终止一些前台进程来确保用户界面正常响应。

  • 可见进程

没有任何前台组件、但仍会影响用户在屏幕上所见内容的进程。 如果一个进程满足以下任一条件,即视为可见进程: 托管不在前台、但仍对用户可见的 Activity(已调用其 onPause() 方法)。例如,如果前台 Activity 启动了一个对话框,允许在其后显示上一 Activity,则有可能会发生这种情况。 托管绑定到可见(或前台)Activity 的 Service。 可见进程被视为是极其重要的进程,除非为了维持所有前台进程同时运行而必须终止,否则系统不会终止这些进程。

  • 服务进程

正在运行已使用 startService() 方法启动的服务且不属于上述两个更高类别进程的进程。尽管服务进程与用户所见内容没有直接关联,但是它们通常在执行一些用户关心的操作(例如,在后台播放音乐或从网络下载数据)。因此,除非内存不足以维持所有前台进程和可见进程同时运行,否则系统会让服务进程保持运行状态。

  • 后台进程

包含目前对用户不可见的 Activity 的进程(已调用 Activity 的 onStop() 方法)。这些进程对用户体验没有直接影响,系统可能随时终止它们,以回收内存供前台进程、可见进程或服务进程使用。 通常会有很多后台进程在运行,因此它们会保存在 LRU (最近最少使用)列表中,以确保包含用户最近查看的 Activity 的进程最后一个被终止。如果某个 Activity 正确实现了生命周期方法,并保存了其当前状态,则终止其进程不会对用户体验产生明显影响,因为当用户导航回该 Activity 时,Activity 会恢复其所有可见状态。 有关保存和恢复状态的信息,请参阅 Activity文档。

  • 空进程

不含任何活动应用组件的进程。保留这种进程的的唯一目的是用作缓存,以缩短下次在其中运行组件所需的启动时间。 为使总体系统资源在进程缓存和底层内核缓存之间保持平衡,系统往往会终止这些进程。

每个像素占用多少 byte ?

Bitmap.Config 有四种枚举类型。 通道类型后数字表示每个通道占的大小

ARGB_8888:每个通道 8 bit * 4个通道 = 32 bit = 4 byte,即每个像素点占用4字节 ARGB_4444:同理,2 字节 RGB_565:RGB 3个通道分别是 5 、6 、5 ,加起来 16 bit,也就是 2 个 byte ALPHA_8:只有 A 通道,占 8 bit,1 个byte 被加载的图片有多少像素点呢? 各资源文件对应屏幕密度(每英寸的像素点)

ldpi mdpi hdpi xhdpi xxhdpi 120 160 240 320 480 注意:实际加载的像素不一定等于原图像素,如资源目录屏幕密度与目标机器不匹配,将按比例缩放

总结 此类问题公式如下: 类型占用比特 x 图片原像素宽 x(目标机器屏幕密度/资源文件夹代表屏幕密度)x 图片原像素高 x(目标机器屏幕密度/资源文件夹代表屏幕密度) 4 * 72 * (320/480) * 72 * (320/480)= 9216 byte

这也是为什么在开发中往往尽可能配齐多个资源文件夹,在高分别率的机器上使用低分辨率资源文件夹的资源有可能导致占用内存翻倍,甚至翻数倍