[转载]总结的一些android面试题,大家看看吧!-Android新手入门-eoe Android开发者社区_Android开发论坛 – Powered by Discuz!.
1. activity的生命周期?
onCreate onStart onResume onPause onStop onDestroy
2. 横竖屏切换的时候activity的生命周期?
onCreate–>
onStart–>
onResume–>
onStart–>
onResume–>
onSaveInstanceState–>
onPause–>
onStop–>
onDestroy–>
onCreate–>
onStart–>
onRestoreInstanceState–>
onResume–>
onPause–>
onStop–>
onDestroy–>
onCreate–>
onStart–>
onRestoreInstanceState–>
onResume–>
3. 说说activity,intent,service是什么?
Activity 是主操作界面 intent是媒介 ,他可以使界面、服务等跳转,相互之间进行转换,并且可以发送数据。service 是服务,是在后台运行的线程。
4. 说说在Android中有哪几种数据存储方式?
网络存储,SQLite数据库存储,文本存储,SharedPreferences,ContentProvider.
5. 写出基本的UI控件和布局文件
TextView、 EditText、AutoCompleteTextView、MultiAutoCompleteTextView、Button、CheckBox、 RadioButton、ListView、GridView、DataPicker、TimePacker、AnalogClock、 DigitalClock、MapView、Gallery、Spinner、
LinearLayout、TableLayout、RelativeLayout、AbsoluteLayout、FrameLayout
6. 如何操作手机上的数据库SQLite应用?
SQLiteDatabase db= ….;
db.execSQL(“insertinto person(name, age) values(‘com360’, 4)”);
db.close();
db.execSQL(“insertinto person(name, age) values(‘com360’, 4)”);
db.close();
7. 如果后台的Activity由于某种原因被系统收回了,如何在被系统回收之前保存当前状态?
当一个Activity被pause或者stop的时候,这个Activity的对象实际上还是保存在内存中,因此这个Activity中的信息(成员和状态信息)还可以重新获取到.
如果系统为了整理内存而销毁了整合各Activity对象时,系统没法简单的原封不动地恢复先前的Activity对象及其状态信息.
Activity中提供了一个方法:onSavedInstanceState(Bundle obj).当系统销毁一个Activity时, 会将Activity的状态信息已键值对形式存放在bundle对象中.
第一次启动Activity时,这个bundle对象是空的,null.如果Activity被系统销毁了,然后用户要回退回去看的话,系统会调用这个Activity的onCreate方法,并把bundle对象传递过去.
如果系统为了整理内存而销毁了整合各Activity对象时,系统没法简单的原封不动地恢复先前的Activity对象及其状态信息.
Activity中提供了一个方法:onSavedInstanceState(Bundle obj).当系统销毁一个Activity时, 会将Activity的状态信息已键值对形式存放在bundle对象中.
第一次启动Activity时,这个bundle对象是空的,null.如果Activity被系统销毁了,然后用户要回退回去看的话,系统会调用这个Activity的onCreate方法,并把bundle对象传递过去.
当你的程序中某一个Activity A在运行时,主动或被动地运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。B完成以后又会来找A,这个时候就有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被收回的就直接执行onResume(),跳过onCreate()了。
8. 如何将一个activity设置成窗口的样式?
Android:theme=”@android:style/Theme.Translucent”
9. 请介绍下ContentProvider是如何实现数据共享的?
一个程序可以通过实现一个Content provide的抽象接口将自己的数据完全暴露出去,而且Content providers是 以类似数据中表的方式将数据暴露。Content providers 存储和检索数据。通过它可以让所有的应用程序访问到,这也是应用程序之间唯一共享数据的方法。要想使应用程序的数据公开化。可通过2种方法:创建一个属于 自己的Content provide 或者将你的数据添加到一个已经存在的Content provider 中,前提是有相同数据类型并且有写入Content provider的权限。通过一套标准及统一的接口可获取其他应用程序暴露的数据。 Android提供了ContentResolver,外界的程序可以通过CotentResolver接口访问ContentProvider提供的数 据。
10. 如何启用Service,如何停用Service?
启用:1、 继承Service类 2、 在AndroidManifest.xml文件中注册 3、 调用Context.startService()或Context.bindService()方法启动服务
停用:Context.startServiec启用的service, 调用Context.stopService()方法结束服务。
Context.bindService启动的service, 调用者退出后,先调onUnbind()方法,接着调用onDestroy()方法。
11. 注册广播有几种方式?这些方式有何优缺点?请谈谈Android引入广播机制的用意?
2种方式。一种代码动态注册,一种在AndroidManifest.xml文件里静态注册。
动态注册不是常驻型广播,就是说广播会跟随程序的生命周期。
静态注册时常驻型广播,也就是说当应用程序关闭后,如果有信息广播来。程序也会被系统调用自动运行。手机开发,cpu和电源资源比较少。一直处于活动会大量耗费资源。
12. AIDL的全称是什么?如何工作?能处理哪些类型的数据?
Android 接口描述语言 Android Interface Definition Language
先将对象转化成AIDL可识别的参数(可能是多个参数), 然后使用AIDL来传递这些参数, 在消息的接收端, 使用这些参数组装成自己需要的对象
不需要import声明的简单Java编程语言类型(int,boolean等)
String, CharSequence不需要特殊声明
List, Map和Parcelables类型, 这些类型内所包含的数据成员也只能是简单数据类型, String等其他比支持的类型.
13. 如何创建一个上下文菜单?
覆盖 Activity 的 onCreateContenxtMenu() 方法,调用 Menu 的 add 方法添加菜单项(MenuItem)。、
覆盖 Activity 的 onContextItemSelected() 方法,响应上下文菜单菜单项的单击事件。
调用 registerForContextMenu() 方法,为视图注册上下文菜单。
14. 什么是嵌入式实时操作系统,Android操作系统属于实时操作系统吗?
嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快 速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、 军事设备、 航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而android是基于linux内核的,因此属于软实时。