在Android开发中,Activity是应用程序的核心组件之一,它代表了一个用户界面。Activity是Context的子类,具备处理用户交互的能力,比如通过setContentView()方法设置布局,并且它实现了Window.Callback和KeyEvent.Callback接口,使得能够捕获和处理窗体事件。在实际开发中,我们常常会根据需求定制BaseActivity,用于复用一些共通的功能或界面元素,例如ListActivity、PreferenceActivity和TabActivity。
Activity的生命周期是Android开发者必须理解的重要概念。从创建到销毁,Activity会经历一系列的方法调用,包括onCreate()、onDestroy()、onStart()、onStop()、onResume()和onPause()。onCreate()是Activity的初始化阶段,onDestroy()则标志着Activity的彻底结束。onStart()和onStop()分别对应Activity可见性和不可见性的变化,而onResume()和onPause()则与Activity是否获取焦点有关。当Activity被暂停并再次启动时,会调用onRestart()而不是onCreate()。
在Activity之间的跳转中,通常会经历这样的流程:在A活动中调用另一个Activity B时,A会调用onPause(),接着B依次执行onCreate()、onStart()和onResume()。若B是透明或对话框样式,A则不会调用onStop()。这种行为可以通过Intent和startActivity()方法实现。
横竖屏切换时,Activity的生命周期会根据AndroidManifest.xml中Activity的配置发生变化。如果不指定android:configChanges,系统会默认销毁并重建Activity,执行onPause()、onStop()、onDestroy()、onCreate()、onStart()和onResume()。而如果设置android:configChanges="orientation|keyboardHidden",Activity会调用onConfigurationChanged()来处理屏幕方向变化,避免重新创建。
将Activity设置为窗口样式可以通过自定义主题实现。例如,在res/values/styles.xml文件中定义一个新样式,如“FloatActivity”,并在AndroidManifest.xml中为Activity指定这个样式。
当Activity被系统回收时,为了保留用户状态,我们需要在onSaveInstanceState(Bundle outState)方法中保存关键数据,这是系统在Activity被销毁前调用的。同时,我们可以在onRestoreInstanceState(Bundle savedInstanceState)中恢复这些数据,以确保用户回到Activity时能看到之前的状态。
除了理解Activity生命周期,面试中还可能会涉及其他方面,如Intent的使用、BroadcastReceiver、Service、ContentProvider、进程通信(AIDL)、内存管理、性能优化、异常处理、多线程以及Android框架的深入理解等。全面掌握这些知识点对于成为一名优秀的Android开发者至关重要。在准备面试时,除了理论知识,实践经验同样重要,因为面试官往往会询问实际开发中遇到的问题及解决方案。