Android 学习笔记

时间:2023-03-09 07:46:14
Android 学习笔记
1.sleep(),wait(),notify(),notifyAll()
  sleep()是线程类的静态方法,阻塞线程一定时间后再次使线程处于可以被调度运行的状态wait(),notify(),notifyAll()是运用内部对象条锁时使用的方法,当线程需要满足某条件时,调用wait()将此线程添加到等待集中,notify()(解除单个线程),notifyAll()(解除所有线程)用于解除等待集中线程的阻塞状态。
 .
2.android 内存(泄露)溢出问题
(1) 查询数据库没有关闭游标,就是资源对象没有关闭造成的泄露 
(2) 构造Adapter时,没有使用缓存的 convertView 
(3) Bitmap对象不在使用时没有调用recycle()释放内存 
(4) 没有恰当释放对象的引用 
(5) 启动了service但是没有停止service
(6)集合类中的无用对象没有及时清理造成的内存泄露
(7)静态数据,对象引用 
3.Java 匿名内部类

  匿名内部类也就是没有名字的内部类,正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 ,

但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。

4.android 启动的基本过程   

  (1) init进程启动
  (2) Native服务启动
  (3) System Server,Android服务启动
  (4) Home启动

5.程序崩溃异常收集

  首先要实现要实现UncaughtExceptionHandler 接口 ,然后在Application 中注册,可以让程序崩溃捕捉类在监控整个程序运行过程。

当程序崩溃时就会调研UncaughtExceptionHandler中的接口,来收集异常信息,具体的信息收集在 UncaughtException() 接口中实现.

6.程序 打包,编译,发布流程

  (1)打包资源文件 (2) 编译java文件 (3)将class文件转换成 android虚拟机能识别的dex文件 (4)打包生成apk文件 (5)对apk文件进行签名 (6)发布apk文件

7.缓存框架

Android 学习笔记

8.下拉刷新原理

Android 学习笔记

9 ListView 优化

(1)利用好视图缓存 contentView 和ViewHolder(2)采用分页加载,数据缓存的方式

10 Intent Flag 常用参数

(1)FLAG_ACTIVITY_CLEAR_TOP A,B,C,D->A,B (在D中调用B)

(2)FLAG_ACTIVITY_NEW_TASK A,B,C,D->A,B,C,D,D(在D中调用D)

(3)FLAG_ACTIVITY_NO_HISTORY A,B,C->A,B,C(在C中调用D)

(4)FLAG_ACTIVITY_SINGLE_TOP A,B,C,D->A,B,C,D(在D中调用D)

10.图片缓存机制

Android 学习笔记

11.自定义View 提高效率

(1)优化布局层次(2)复用布局(3)减少不必要的onDraw,onLayout开销

12.JNI 调用步骤

(1)在java类中编写Native接口

(2)生成对应的.h头文件

(3)用C/C++实现本地方法

(4)将编写的C/C++文件生成动态链接库

(5)然后就可以调用本地方法了

 13.进程与线程之间的区别与联系

进程是资源分配的最小单位,线程是CPU调度的最小单位

14.Android 终止一个进程

(1)调用KillProcess()结束当前应用程序下的进程

(2)调用restartPackage()结束其他程序下的进程

(3)调用killBackgroundProcesses()

(4)也可以按返回键返回至主屏幕来退出当前进程



14.Java 如何同步

(1)可以使用最基本lock,unlock 加锁解锁来实现同步。

(2)可以使用同步关键字synchronized,同步变量,代码块,同步方法。

(3)可以使用阻塞队列,Hashtable原本就线程安全的数据结构。

15.Android 应用程序之间通讯方式

(1)通过Intent进行数据的传输

(2)AIDL接口文件进行数据传输

(3)通过content provider进行数据传输

(4)通过web服务器来交换数据

(5)通过broadcast的方式来交换数据

16.Sqlite使用注意

(1)启用连接后要及时关闭连接,游标要及时关闭

(2)如果读取的数据会被多次复用,可以在内存中进行缓存处理

(3)如果读取的是大量的数据,可以分批次取出处理,提高程序的响应速度

17.AIDL支持的数据类型

1. Java 的原生类型
2. String 和CharSequence
3. List 和 Map ,List和Map 对象的元素必须是AIDL支持的数据类型; 以上三种类型都不需要导入(import)
4. AIDL 自动生成的接口 需要导入(import)
5. 实现android.os.Parcelable 接口的类. 需要导入(import)

18.HashMap 数据结构

在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表的数组”的数据结构,每个元素存放链表头结点的数组,即数组和链表的结合体。

Android 学习笔记