总结了一些常见的Android面试题,内容会随着不断学习陆续增加。答案有误地方希望大家可以指正 ,同时希望大家一起补充总结更多常见问题,谢谢^_^
1. 简述Activity的生命周期
2. 请简单说下对广播接收者有哪些了解
3. view如何刷新?简述什么是双缓冲?
4、AIDL的全称是什么?如何工作?能处理哪些类型的数据?
5、java中如何引用本地语言
6、谈谈Android的IPC(进程间通信)机制
7、NDK 是什么
8、如何将SQLite数据库(xxx.db文件)与apk文件一起发布
1.简述Activity的生命周期
1、Activity可见并获得焦点
当Activity启动的时候,首先调用onCreate()、onStart(),onResume()方法,此时Activity对用户来说,是可见的状态
2、Activity可见但没获得焦点
当Activity从可见状态变为被Dialog遮挡的状态的时候,会调用onPause()方法,此时的Activity对用户可见,但是不能获得焦点
3、Activity不可见
当Activity从可见状态变为被其他的Activity完全覆盖或者是点击Home进入后台的时候,会依次调用onPause()//onStop()方法,如果在这个期间,系统内存不足,导致Activity被回收的话,还会调用onDestory()方法
4、Activity可见、没获得焦点状态 –> Activity可见、获得焦点状态
当Activity从被Dialog遮挡的状态恢复的时候,会调用onResume()方法,从而恢复可以点击的状态
5、Activity不可见、没获得焦点状态 –> Activity可见、获得焦点状态
当Activity从被其他Activity遮挡或者是进入后台状态后恢复,若没有被系统回收,会依次调用onRestart()、onStart()、onResume()方法,恢复到可以与用户进行交互的状态
6、Activity不可见状态–> Activity被回收 –> Activity可见、获得焦点状态
当Activity从被其他Activity遮挡或者进入后台,而且被系统回收的时候,此时恢复Activity,相当于重新打开一个Activity,既调用onCreate()、onStart()//onResume()方法,从而恢复到可与用户进行交互的状态(期间可调用onRestoreInstanceState(),进行界面恢复)。
7、Activity可见、获得焦点状态 –> Activity可见、没获得焦点状态 或 不可见状态
在onPause()方法执行后,系统会停止一些消耗 CPU 的操作,因为这个时候程序的优先级降低,很有可能被系统收回,所以我们应该在这个方法里做数据持久化处理。保存的数据可在 onResume() 里读出来,帮用户恢复到之前的状态。
8、Activity结束
在onDestroy()执行后,activity生命周期就结束了,可用 isFinishing()方法来判断。如果此时有 Progress Dialog显示,我们应该在onDestroy()里 cancel 掉,否则线程结束的时候,调用Dialog 的 cancel 方法会抛异常。
2.请简单说下对广播接收者有哪些了解
广播接收者(BroadcastReceiver)用于接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()来实现的。通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收,这个特性跟JMS中的Topic消息接收者类似。要实现一个广播接收者方法如下:
第一步:继承BroadcastReceiver,并重写onReceive()方法。