书签 分享 收藏 举报 版权申诉 / 13
上传文档赚钱

类型Android面试常问基础知识点.docx

  • 上传人(卖家):刘殿科
  • 文档编号:5971270
  • 上传时间:2023-05-19
  • 格式:DOCX
  • 页数:13
  • 大小:19.15KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Android面试常问基础知识点.docx》由用户(刘殿科)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Android 面试 基础 知识点
    资源描述:

    1、Android面试常问基础知识点1、四大组件是什么1)Activity:用户可操作的可视化界面,为用户提供一个完成操作指令的窗口。一个Activity通常是一个单独的屏幕,Activity通过Intent来进行通信。Android中会维持一个Activity Stack,当一个新Activity创建时,它就会放到栈顶,这个Activity就处于运行状态。2)Service:服务,运行在手机后台,适合执行不需和用户交互且还需长期运行的任务。3)ContentProvider:内容提供者,使一个应用程序的指定数据集提供给其他应用程序,其他应用可通过ContentResolver类从该内容提供者中获

    2、取或存入数据。它提供了一种跨进程数据共享的方式,当数据被修改后,ContentResolver接口的notifyChange函数通知那些注册监控特定URI的ContentObserver对象。如果ContentProvider和调用者在同一进程中,ContentProvider的方法(query/insert/update/delete等)和调用者在同一线程中;如果ContentProvider和调用者不在同一进程,ContentProvider方法会运行在它自身进程的一个Binder线程中。4)Broadcast Receiver: 广播接收者,运用在应用程序间传输信息,可以使用广播接收器来

    3、让应用对一个外部事件做出响应。2、四大组件的生命周期和简单用法1)Activity:onCreate()-onStart()-onResume()-onPause()-onStop()-onDestory()onCreate():为Activity设置布局,此时界面还不可见;onStart(): Activity可见但还不能与用户交互,不能获得焦点onRestart(): 重新启动Activity时被回调onResume(): Activity可见且可与用户进行交互onPause(): 当前Activity暂停,不可与用户交互,但还可见。在新Activity启动前被系统调用保存现有的Activ

    4、ity中的持久数据、停止动画等。onStop(): 当Activity被新的Activity覆盖不可见时被系统调用onDestory(): 当Activity被系统销毁杀掉或是由于内存不足时调用2)Servicea) onBind方式绑定的:onCreate-onBind-onUnBind-onDestory(不管调用bindService几次,onCreate只会调用一次,onStart不会被调用,建立连接后,service会一直运行,直到调用unBindService或是之前调用的bindService的Context不存在了,系统会自动停止Service,对应的onDestory会被调用

    5、)b) startService启动的:onCreate-onStartCommand-onDestory(start多次,onCreate只会被调用一次,onStart会调用多次,该service会在后台运行,直至被调用stopService或是stopSelf)c) 又被启动又被绑定的服务,不管如何调用onCreate()只被调用一次,startService调用多少次,onStart就会被调用多少次,而unbindService不会停止服务,必须调用stopService或是stopSelf来停止服务。必须unbindService和stopService(stopSelf)同时都调用了

    6、才会停止服务。3)BroadcastReceivera) 动态注册:存活周期是在Context.registerReceiver和Context.unregisterReceiver之间,BroadcastReceiver每次收到广播都是使用注册传入的对象处理的。b) 静态注册:进程在的情况下,receiver会正常收到广播,调用onReceive方法;生命周期只存活在onReceive函数中,此方法结束,BroadcastReceiver就销毁了。onReceive()只有十几秒存活时间,在onReceive()内操作超过10S,就会报ANR。进程不存在的情况,广播相应的进程会被拉活,App

    7、lication.onCreate会被调用,再调用onReceive。4)ContentProvider:应该和应用的生命周期一样,它属于系统应用,应用启动时,它会跟着初始化,应用关闭或被杀,它会跟着结束。3、Activity之间的通信方式1)通过Intent方式传递参数跳转2)通过广播方式3)通过接口回调方式4)借助类的静态变量或全局变量5)借助SharedPreference或是外部存储,如数据库或本地文件4、Activity各种情况下的生命周期1) 两个Activity(A-B)切换(B正常的Activity)的生命周期:onPause(A)-onCreate(B)-onStart(B)

    8、-onResume(B)-oStop(A)这时如果按回退键回退到AonPause(B)-onRestart(A)-onStart(A)-onResume(A)-oStop(B)如果在切换到B后调用了A.finish(),则会走到onDestory(A),这时点回退键会退出应用2) 两个Activity(A-B)切换(B透明主题的Activity或是Dialog风格的Acivity)的生命周期:onPause(A)-onCreate(B)-onStart(B)-onResume(B)这时如果回退到AonPause(B)-onResume(A)-oStop(B)-onDestory(B)3) Ac

    9、tivity(A)启动后点击Home键再回到应用的生命周期:onPause(A)-oStop(A)-onRestart(A)-onStart(A)-onResume(A)5、横竖屏切换的时候,Activity 各种情况下的生命周期1)切换横屏时:onSaveInstanceState-onPause-onStop-onDestory-onCreate-onStart-onRestoreInstanceState-onResume2) 切换竖屏时:会打印两次相同的log onSaveInstanceState-onPause-onStop-onDestory-onCreate-onStart-o

    10、nRestoreInstanceState-onResume-onSaveInstanceState-onPause-onStop-onDestory-onCreate-onStart-onRestoreInstanceState-onResume3) 如果在AndroidMainfest.xml中修改该Activity的属性,添加android:configChanges=orientation横竖屏切换,打印的log一样,同1)4) 如果AndroidMainfest.xml中该Activity中的android:configChanges=orientation|keyboardHidd

    11、en,则只会打印onConfigurationChanged-6、Activity与Fragment之间生命周期比较Fragment生命周期:onAttach-onCreate-onCreateView-onActivityCreated-onStart-onResume-onPause-onStop-onDestoryView-onDestory-onDetach切换到该Fragment:onAttach-onCreate-onCreateView-onActivityCreated-onStart-onResume按下Power键:onPause-onSaveInstanceState-o

    12、nStop点亮屏幕解锁:onStart-onRestoreInstanceState-onResume切换到其他Fragment: onPause-onStop-onDestoryView切回到该Fragment: onCreateView-onActivityCreated-onStart-onResume退出应用:onPause-onStop-onDestoryView-onDestory-onDetach7、Activity上有Dialog的时候按Home键时的生命周期AlertDialog并不会影响Activity的生命周期,按Home键后才会使Activity走onPause-onS

    13、top,AlertDialog只是一个组件,并不会使Activity进入后台。8、两个Activity 之间跳转时必然会执行的是哪几个方法?前一个Activity的onPause,后一个Activity的onResume9、前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法。1)前台切换到后台,会执行onPause-onStop,再回到前台,会执行onRestart-onStart-onResume2) 弹出Dialog,并不会影响Activity生命周期10、Activity的四种启动模式对比1)standard:标准启动模式(默认),每启

    14、动一次Activity,都会创建一个实例,即使从ActivityA startActivity ActivityA,也会再次创建A的实例放于栈顶,当回退时,回到上一个ActivityA的实例。2) singleTop:栈顶复用模式,每次启动Activity,如果待启动的Activity位于栈顶,则不会重新创建Activity的实例,即不会走onCreate-onStart,会直接进入Activity的onPause-onNewIntent-onResume方法3) singleInstance: 单一实例模式,整个手机操作系统里只有一个该Activity实例存在,没有其他Actvity,后续请

    15、求均不会创建新的Activity。若task中存在实例,执行实例的onNewIntent()。应用场景:闹钟、浏览器、电话4) singleTask:栈内复用,启动的Activity如果在指定的taskAffinity的task栈中存在相应的实例,则会把它上面的Activity都出栈,直到当前Activity实例位于栈顶,执行相应的onNewIntent()方法。如果指定的task不存在,创建指定的taskAffinity的task,taskAffinity的作用,进入指写taskAffinity的task,如果指定的task存在,将task移到前台,如果指定的task不存在,创建指定的tas

    16、kAffinity的task. 应用场景:应用的主页面11、Activity状态保存于恢复Activity被主动回收时,如按下Back键,系统不会保存它的状态,只有被动回收时,虽然这个Activity实例已被销毁,但系统在新建一个Activity实例时,会带上先前被回收Activity的信息。在当前Activity被销毁前调用onSaveInstanceState(onPause和onStop之间保存),重新创建Activity后会在onCreate后调用onRestoreInstanceState(onStart和onResume之间被调用),它们的参数Bundle用来数据保存和读取的。保存

    17、View状态有两个前提:View的子类必须实现了onSaveInstanceState; 必须要设定Id,这个ID作为Bundle的Key12、fragment各种情况下的生命周期正常情况下的生命周期:onAttach-onCreate-onCreateView-onActivityCreated-onStart-onResume-onPause-onStop-onDestoryView-onDestory-onDetach1)Fragment在Activity中replace onPause(旧)-onAttach-onCreate-onCreateView-onActivityCreate

    18、d-onStart-onResume-onStop(旧)-onDestoryView(旧)如果添加到backStack中,调用remove()方法fragment的方法会走到onDestoryView,但不会执行onDetach(),即fragment本身的实例是存在的,成员变量也存在,但是view被销毁了。如果新替换的Fragment已在BackStack中,则不会执行onAttach-onCreate13、Fragment状态保存onSaveInstanceState是哪个类的方法,在什么情况下使用?在对应的FragmentActivity.onSaveInstanceState方法会调用

    19、FragmentController.saveAllState,其中会对mActive中各个Fragment的实例状态和View状态分别进行保存.当Activity在做状态保存和恢复的时候, 在它其中的fragment自然也需要做状态保存和恢复.14、Fragment.startActivityForResult是和FragmentActivity的startActivityForResult?如果希望在Fragment的onActivityResult接收数据,就要调用Fragment.startActivityForResult, 而不是Fragment.getActivity().sta

    20、rtActivityForResult。Fragment.startActivityForResult-FragmentActivitymHost.HostCallbacks.onStartActivityFromFragment-FragmentActivity.startActivityFromFragment。如果request=-1则直接调用FragmentActivity.startActivityForResult,它会重新计算requestCode,使其大于0xfffff。15、如何实现Fragment的滑动?ViewPager+FragmentPagerAdapter+List

    21、16、fragment之间传递数据的方式?1)在相应的fragment中编写方法,在需要回调的fragment里获取对应的Fragment实例,调用相应的方法;2)采用接口回调的方式进行数据传递;a) 在Fragment1中创建一个接口及接口对应的set方法; b) 在Fragment1中调用接口的方法;c)在Fragment2中实现该接口;3)利用第三方开源框架EventBus17、service和activity怎么进行数据交互?1)通过bindService启动服务,可以在ServiceConnection的onServiceConnected中获取到Service的实例,这样就可以调用

    22、service的方法,如果service想调用activity的方法,可以在service中定义接口类及相应的set方法,在activity中实现相应的接口,这样service就可以回调接口言法;2)通过广播方式18、说说ContentProvider、ContentResolver、ContentObserver 之间的关系ContentProvider实现各个应用程序间数据共享,用来提供内容给别的应用操作。如联系人应用中就使用了ContentProvider,可以在自己应用中读取和修改联系人信息,不过需要获取相应的权限。它也只是一个中间件,真正的数据源是文件或SQLite等。Content

    23、Resolver内容解析者,用于获取内容提供者提供的数据,通过ContentResolver.notifyChange(uri)发出消息ContentObserver内容监听者,可以监听数据的改变状态,观察特定Uri引起的数据库变化,继而做一些相应的处理,类似于数据库中的触发器,当ContentObserver所观察的Uri发生变化时,便会触发它。19、请描述一下广播BroadcastReceiver的理解BroadcastReceiver是一种全局监听器,用来实现系统中不同组件之间的通信。有时候也会用来作为传输少量而且发送频率低的数据,但是如果数据的发送频率比较高或者数量比较大就不建议用广播

    24、接收者来接收了,因为这样的效率很不好,因为BroadcastReceiver接收数据的开销还是比较大的。20、广播的分类1)普通广播:完全异步的,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递的效率比较高,并且无法中断广播的传播。2)有序广播:发送有序广播后,广播接收者将按预先声明的优先级依次接收Broadcast。优先级高的优先接收到广播,而在其onReceiver()执行过程中,广播不会传播到下一个接收者,此时当前的广播接收者可以abortBroadcast()来终止广播继续向下传播,也可以将intent中的数据进行修改设置,然后将其传播到下一个广播接收者。 sendOrderedB

    25、roadcast(intent, null);/发送有序广播3)粘性广播:sendStickyBroadcast()来发送该类型的广播信息,这种的广播的最大特点是,当粘性广播发送后,最后的一个粘性广播会滞留在操作系统中。如果在粘性广播发送后的一段时间里,如果有新的符合广播的动态注册的广播接收者注册,将会收到这个广播消息,虽然这个广播是在广播接收者注册之前发送的,另外一点,对于静态注册的广播接收者来说,这个等同于普通广播。21、广播使用的方式和场景1)App全局监听:在AndroidManifest中静态注册的广播接收器,一般我们在收到该消息后,需要做一些相应的动作,而这些动作与当前App的组件

    26、,比如Activity或者Service的是否运行无关,比如我们在集成第三方Push SDK时,一般都会添加一个静态注册的BroadcastReceiver来监听Push消息,当有Push消息过来时,会在后台做一些网络请求或者发送通知等等。2)组件局部监听:这种主要是在Activity或者Service中使用registerReceiver()动态注册的广播接收器,因为当我们收到一些特定的消息,比如网络连接发生变化时,我们可能需要在当前Activity页面给用户一些UI上的提示,或者将Service中的网络请求任务暂停。所以这种动态注册的广播接收器适合特定组件的特定消息处理。22、在manif

    27、est 和代码中如何注册和使用BroadcastReceiver?1)mainfest中注册:静态注册的广播接收者就是一个常驻在系统中的全局监听器,也就是说如果你应用中配置了一个静态的BroadcastReceiver,而且你安装了应用而无论应用是否处于运行状态,广播接收者都是已经常驻在系统中了。 2) 动态注册:动态注册的广播接收者只有执行了registerReceiver(receiver, filter)才会开始监听广播消息,并对广播消息作为相应的处理。IntentFilter fiter = new IntentFilter(com.smilexie.test.intent.mybro

    28、adcastreceiver);MyBroadcastReceiver receiver = new MyBroadcastReceiver();registerReceiver(receiver, filter); /撤销广播接受者的动态注册unregisterReceiver(receiver);23、本地广播和全局广播有什么差别?1)LocalBroadcastReceiver仅在自己的应用内发送接收广播,也就是只有自己的应用能收到,数据更加安全。广播只在这个程序里,而且效率更高。只能动态注册,在发送和注册的时候采用LocalBroadcastManager的sendBroadcast方

    29、法和registerReceiver方法。2)全局广播:发送的广播事件可被其他应用程序获取,也能响应其他应用程序发送的广播事件(可以通过 exported是否监听其他应用程序发送的广播 在清单文件中控制) 全局广播既可以动态注册,也可以静态注册。24、AlertDialog,popupWindow,Activity区别(1)Popupwindow在显示之前一定要设置宽高,Dialog无此限制。(2)Popupwindow默认不会响应物理键盘的back,除非显示设置了popup.setFocusable(true);而在点击back的时候,Dialog会消失。(3)Popupwindow不会给页

    30、面其他的部分添加蒙层,而Dialog会。(4)Popupwindow没有标题,Dialog默认有标题,可以通过dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);取消标题(5)二者显示的时候都要设置Gravity。如果不设置,Dialog默认是Gravity.CENTER。(6)二者都有默认的背景,都可以通过setBackgroundDrawable(new ColorDrawable(android.R.color.transparent);去掉。(7)Popupwindow弹出后,取得了用户操作的响应处理权限,使得其他UI控件不被触发。

    31、而AlertDialog弹出后,点击背景,AlertDialog会消失。25、Application 和 Activity 的 Context 对象的区别1)Application Context是伴随应用生命周期;不可以showDialog, startActivity, LayoutInflation可以startServiceBindServicesendBroadcastregisterBroadcastload Resource values2)Activity Context指生命周期只与当前Activity有关,而Activity Context这些操作都可以,即凡是跟UI相关的

    32、,都得用Activity做为Context来处理。一个应用Context的数量=Activity数量+Service数量+1(Application数量)-Android属性动画特性-如何导入外部数据库?-LinearLayout、RelativeLayout、FrameLayout的特性及对比,并介绍使用场景。-谈谈对接口与回调的理解-回调的原理-写一个回调demo-介绍下SurfView-RecycleView的使用-序列化的作用,以及Android两种序列化的区别-差值器实现Interpolator接口,设置值的变化趋势,SDK中包含了匀速插值器、加速插值器、减速插值器、先加速再减速、弹-估值器实现TypeEvaluatior接口-Android中数据存储方式

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Android面试常问基础知识点.docx
    链接地址:https://www.163wenku.com/p-5971270.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库