Android面试常考知识点:View刷新、内存泄露与优化

需积分: 0 5 下载量 50 浏览量 更新于2024-09-24 收藏 147KB PDF 举报
"Android面试题,涵盖View重绘、内存泄露、GC机制、Bitmap管理、Activity生命周期等内容" 在Android开发中,面试题通常会围绕关键概念和技术进行,如View的刷新机制、内存泄露的识别和预防、ListView的优化以及Activity的生命周期管理。以下是对这些知识点的详细解释: 1. **View的刷新**: 当需要更新View时,可以使用Handler发送消息,然后在Handler的`handleMessage()`方法中调用`invalidate()`或`postInvalidate()`。这两个方法用于标记View需要重新绘制,系统会在下一次绘制周期中处理。 2. **GC内存泄露**: - **未关闭的Cursor**:数据库查询结果Cursor未关闭会导致内存泄露,因为Cursor持有对数据库连接的引用,需确保在使用后调用`close()`。 - **Adapter与convertView**:在构造Adapter时,如果不使用convertView(来自`getView()`的参数),每次创建新视图对象,会消耗大量内存。应充分利用convertView,减少视图的创建。 - **ListView优化**:通过复用convertView,减少对象创建,可以显著提升性能。可以创建一个静态内部类来优化视图的复用。 - **Bitmap管理**:当Bitmap不再使用时,调用`recycle()`方法释放内存,但注意回收可能导致无法再次访问,应当谨慎使用。 3. **Activity的生命周期**: - `onCreate(Bundle savedInstanceState)`:Activity创建时调用,用于初始化界面和数据。 - `onStart()`:Activity可见但不一定是焦点时调用,用户可以感知到Activity。 - `onResume()`:Activity获得焦点,用户可以与之交互。 - `onPause()`:当Activity被遮挡或用户离开时调用,此时应保存临时数据,因为可能不会调用`onStop()`。 - `onStop()`:Activity完全不可见时调用,通常与`onStart()`成对出现。 - `onDestroy()`:Activity销毁,可能不会总是被调用,例如系统资源紧张时,Activity可能直接被杀死。 4. **Activity管理**: 在资源有限的情况下,系统可能会回收后台Activity。为了防止数据丢失,可以在`onSaveInstanceState(Bundle outState)`中保存状态,并在`onCreate(Bundle savedInstanceState)`或`onRestoreInstanceState(Bundle savedInstanceState)`中恢复。此外,Intent是Android应用间通信的主要方式,用于启动Activity、Service等。 5. **内存分析工具**: 使用DDMS工具中的Heap Size可以查看内存分配情况,找出可能的内存泄漏对象,TotalSize列显示了对象占用的总内存。 面试中还可能涉及Android的整体架构、HAL层(硬件抽象层)等内容,理解这些有助于构建全面的Android知识体系。了解并熟练掌握上述知识点,对于成为一名优秀的Android开发者至关重要。