您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > Android面试题
11.横竖屏切换时候Activity的生命周期?1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次2、设置Activity的android:configChanges=orientation时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次3、设置Activity的android:configChanges=orientation|keyboardHidden时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法12.Activity的生命周期onCreate:当第一次调用一个Activity就会执行onCreate方法onDestroy:当Activity被销毁时会调用onDestory方法onStart:当Activity处于可见状态的时候就会调用onStart方法onStop:当Activity处于不可见状态的时候就会调用onStop方法onResume:当Activity可以得到用户焦点的时候就会调用onResume方法onPause:当Activity被遮挡住的时候就会调用onPause方法onRestart:当Activity没有被销毁的时候重新调用这个Activity就会调用onRestart方法一个Activity正常启动过程中执行onCreateonStartonResume当这个Activity被干被干掉时执行onPauseonStoponDestroy13.Fragment的生命周期onAttach:onCreate:onCreateView:onActivityCreated:onStart:onResume:fragment正在使用a:usernavigatesbackwardorfragmentisremoved/replaced用户导航落后或片段删除/替换b:thefragmentisaddedtothebackstack,thenremoved/replaced该片段被添加到堆栈中,然后删除/替换onPause:onStop:onDestroyView:b:thefragmentreturnstothelayoutfromthebackstack片段返回到堆栈的布局.跳到onCreateViewonDestroy:onDetach:1.当一个fragment被创建的时候,它会经历以下状态.onAttach()onCreate()onCreateView()onActivityCreated()2.当这个fragment对用户可见的时候,它会经历以下状态。onStart()onResume()3.当这个fragment进入“后台模式”的时候,它会经历以下状态。onPause()onStop()4.当这个fragment被销毁了(或者持有它的activity被销毁了),它会经历以下状态。onPause()onStop()onDestroyView()onDestroy()onDetach()5.就像activitie一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。onCreate()onCreateView()onActivityCreated()6.fragments的大部分状态都和activitie很相似,但fragment有一些新的状态。onAttached()——当fragment被加入到activity时调用(在这个方法中可以获得所在的activity)。onCreateView()——当activity要得到fragment的layout时,调用此方法,fragment在其中创建自己的layout(界面)。onActivityCreated()——当activity的onCreated()方法返回后调用此方法onDestroyView()——当fragment中的视图被移除的时候,调用这个方法。onDetach()——当fragment和activity分离的时候,调用这个方法。一旦activity进入resumed状态(也就是running状态),你就可以自由地添加和删除fragment了。因此,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的。14.在一个应用程序中,已知按顺序启动6个activity,编号控顺序分别为1,2,3,4,5,6.如何从第6个activity跳转到第2个activity,并清除中间的activity21.说出Service的生命周期,并说出Service和CGI的区别startService启动bindSerice启动onCreate()onCreate()onStartCommand()onBind()servicerunning运行服务clientsareboundtoservice客户绑定服务a:theserviceisstoppedbyitseiforaclient服务本身或客户停止b:allclientsunbindbycallingunbindService所有客户端通过调用unbindService解除绑定onDestroy()onUnbind()onDestroy()serviceshutdown服务关闭22.介绍一下service,service作为一个后台程序,能否执行耗时操作23.如何启用Service,如何停用Service可以通过在activity中设置事件。当事件触发时利用intentIntentintent=newIntent(MainActivity.this,ServiceDemo.class);switch(v.getId()){caseR.id.startBtn:startService(intent);启动break;caseR.id.stopBtn:stopService(intent);停用break;default:break;24.如何保证service不被后台系统杀死,service被系统杀死后如何重启Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStartCommand方法中做一些处理。然后我们注意到这个函数有一个int的返回值从Android官方文档中,我们知道onStartCommand有4种返回值:START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被kill后一定能重启。现在的安卓手机,只要一长按home键,通常都会列出近期任务,这里可以干掉所有进程所以一直不断的在后台运行是不行的,但是你可以通常广播来激活你的service25.简要解释一下activity,intent,intentfilter,service,Broadcase,BroadcaseReceiverActivity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期,Activity的使用需要在Manifest文件中添加相应的Activity,并设置其属性和intent-filter。Intent起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。service是没有界面的长生命周期的代码。一个很好的例子是媒体播放器从列表中播放歌曲。Broadcast是一种广泛运用的在应用程序之间传输信息的机制。BroadcastReceiver是对发送出来的Broadcast进行过滤接受并响应的一类组件。IntentFilter就是用于描述intent的各种属性,比如action,category等26.对Intent,Activity,广播,Service等的理解同2531.Android的四大组件介绍activity:所有程序的根本,所有程序的流程都运行在Activity之中service:是没有界面的长生命周期的代码。broadcastreceiver:对发送出来的Broadcast进行过滤接受并响应的一类组件。contentprovider:如果需要在进程间传递数据,则可以使用AIDL/Binder或创建一个ContentProvider,但是不能跨越进程/包边界直接来使用数据库32.View的刷新在需要刷新的地方使用handler.sendMessage发送信息,然后在handler的getMessage里执行invaliate或者postInvaliate.33.GC内存泄露出现情况:2.1数据库的cursor没有关闭2.2构造adapter时,没有使用缓存contentView衍生listView的优化问题--减少创建view的对象,充分使用contentView,可以使用一静态类来优化处理getView的过程.2.3Bitmap对象不使用时采用recycle()释放内存.2.4......34.在android中,请简述jni的调用过程1.安装和下载cygwin,下载AndroidNDK;2.在ndk项目中JNI接口的设计;3.使用C/C++实现本地方法;4.JNI生成动态链接库.so文件;5.将动态链接库复制到java工程,在Java工程中调用,运行Java工程即可35.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?Activity中提供了一个方法:onSavedInstanceState(Bundleobj).当系统销毁一个Activity时,会将Activity的状态信息已键值对形式存放在bundle对象中.onCreate方法的定义是protectedvoidonCreate(BundlesavedInstanceState)Activity还有个onRestoreInstanceState(BundleoutState)方法.这个方法的描述中也写到在Activity回复先前保存的状态时会被调用.36.请介绍下Android的数据存储方式.1使用SharedPreferences存储数据;它是Android提供的用来存储一些简单配置信息的一种机制2文件存储数据;文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与Java中实现I/O的程序是完全一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件3SQLite数据库存储数据;4使用ContentProvider存储数据;当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据5网络存储数据;需要与Android网络数据包打交道,关于Android网络数据包的详细说明,请阅读AndroidSDK引用了JavaSDK的哪些package37.如何退出Activity?如
本文标题:Android面试题
链接地址:https://www.777doc.com/doc-2897413 .html