Android面试必备:SQLite基础与关键技术详解

需积分: 3 0 下载量 132 浏览量 更新于2024-07-21 收藏 144KB DOCX 举报
本文档主要涵盖了Android开发面试中常见的基础知识和实践问题,涉及多个关键概念和技术点。以下是详细的解答: 1. SQLite:SQLite 是一种轻量级的嵌入式数据库,它允许在本地存储数据,无需服务器连接。其特点包括: - 无需独立的服务器进程 - 数据库文件小型化 - 支持SQL查询 - ACID特性,事务安全 - 单线程,不适合并发访问 2. SQLiteOpenHelper:这是SQLiteOpenHelper类是Android中用于管理SQLite数据库的抽象基类。开发者需要重写的方法有onCreate()和onUpgrade(),前者在首次创建数据库或数据库版本升级时调用,后者在旧版本升级到新版本时调用。 3. 使用步骤: - 创建SQLiteOpenHelper子类 - 在onCreate和onUpgrade中定义数据库结构和版本变化操作 - 通过getWritableDatabase()或getReadableDatabase()获取数据库实例 - 执行SQL操作 - 关闭数据库连接 4. SQLiteOpenHelper与SQLiteDatabase的关系:SQLiteOpenHelper是SQLiteDatabase的扩展,提供了数据库的创建和升级管理功能。SQLiteOpenHelper是抽象父类,而SQLiteDatabase是具体实现类,用于实际操作数据库。 5. 获取SQLiteDatabase的方式:有两种,一是通过SQLiteOpenHelper的子类的getWritableDatabase()或getReadableDatabase()方法,二是通过SQLiteOpenHelper的实例调用getWritableDatabase()或getReadableDatabase()获取。 6-10. Android动画相关知识点:Android动画分为帧动画(Frame Animation)、属性动画(Property Animation)和视图动画(View Animation)。动画实现方式包括XML文件定义、代码编写和AnimatorSet组合。 11-15. 其他知识点如:LayoutInflater用于解析XML布局文件,获取实例的方式有多种,如activity的getSystemService()或Context的getSystemService()等。ListView和ViewPager是常见的UI组件,ListView用于列表展示,ViewPager用于分页浏览,包括设置适配器、监听器等。 16. Android存储方式:有内部存储、外部存储(SD卡)和ContentProvider。开发者根据需求选择合适的数据保存位置。 17. 适配器:Adapter是用于将数据源转换为UI控件显示的桥梁,主要有ArrayAdapter、CursorAdapter、ListAdapter等类型。 18. ProgressBar的常见方法和属性包括设置进度、颜色、样式等,用于显示任务的执行进度。 19. 自定义控件通常涉及继承原生控件并重写draw()方法,或使用XML和样式文件定制。 20. 解决ListView滑动错位:可通过设置listview的overScrollMode属性、增加HeaderView或FooterView,以及使用OnScrollListener监控滑动事件来优化。 21-25. 广播接收者相关知识点,如BroadcastReceiver的继承关系、用途(接收系统或自定义事件)、生命周期管理,以及自定义广播的创建和注册流程。 26. MediaPlayer音乐加载方式包括文件路径、网络URL、ContentResolver查询等。 27. Android项目目录及其功能:主要包括src、res、assets、AndroidManifest.xml等,分别存放Java代码、资源文件、静态资源和应用配置。 28. 字节流与字符流的区别在于处理数据的单位不同,字节流处理的是二进制数据,字符流处理文本数据,可能涉及编码和解码。 29. 类名重写:不能直接覆盖系统类,如String,因为这会导致编译错误。 30. 内存泄露:Java中的内存泄露指的对象不再被引用但仍然占用内存,可能导致应用程序性能下降或耗尽内存。需要确保及时释放不再使用的对象引用。 31. 对于equals()和hashCode()的描述是对的,对象相等并不意味着哈希码一定相同,因为哈希码设计目的是为了快速查找,而非完全匹配。 32. ArrayList和Vector都是基于数组实现的动态数组,ArrayList在元素增加时自动扩容,而Vector在插入和删除元素时同步,性能上ArrayList优于Vector。