ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:29.01KB ,
资源ID:19935674      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19935674.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(安卓面试题及答案详解Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

安卓面试题及答案详解Word格式.docx

1、onStart():activity 变为在屏幕上对用户可见时调用。onResume():activity 开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。onPause():activity 被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!onStop():activity 被停止并转为不可见阶段及后续的生命周期事件时调用。onRestart():重新启动 activity 时调用。该活动仍在栈中,而不是启动新的活动。onDestroy():activity 被完全从系统内存中移除时调用,该方法被调用 两个Activity 之间

2、跳转时必然会执行的是哪几个方法。onCrante() /在 Activity 生命周期开始时调用onRestoreInstanceState()/用来恢复 UI 状态onReStart()/当 Activity 重新启动时调用onStart()/Activity 对用户即将可见时调用onResume()/当 Activity 与用户交互时,绘制界面onSaveInstanceState()/activity 即将移出栈顶保留UI 状态时调用onPause()/暂停当前活动 activity,􏰀交持久数据的改变,停止动画和其他占用 CPU 资源的东西,由于下一个activity

3、 在这个方法返回之前不会resume,所以这个方法的代码执行要快。onStop()/activity 不再可见时调用onDestroy()/在 Activity 销毁钱被调用的最后一个方法。 横竖屏切换时候Activity 的生命周期。1、不设置 Activity 的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次2、设置 Activity 的android:configChanges=orientation时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次3、设置 Activity 的android:orientati

4、on|keyboardHidden时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法 5.如何将一个Activity 设置成窗口的样式。1、在你的 styles.xml 文件中可以新建一如下的类似Dialog 的style/style2、在 AndroidManifest.xml 中在你需要显示为窗口的activity 中添加如下属性: android:theme=style/Theme.FloatActivity 即可也可以直接添加您对应需要展示为Dialog style 的Activity 的android:theme属性值为android:andr

5、oid:。 你后台的Activity 被系统回收怎么办?系统会帮我们记录下回收前Activity 的状态,再次调用被回收的Activity 就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上参数savedInstanceState。savedInstanceState是一个Bundle 对象,你基本上可以把他理解为系统帮你维护的一个Map 对象,我们使用savedInstanceState可以恢复到回收前的状态。 如何退出Activity?如何安全退出已调用多个 Activity 的Application?用finish()方法退出 activity.在2

6、.1 之前,可以使用ActivityManager的restartPackage方法。它可以直接结束整个应用。在使用时需要权限android.permission.RESTART_PACKAGES。在2.2,这个方法失效了,可使用以下几个人工的方法1、记录打开的 Activity:每打开一个Activity,就记录下来。在需要退出时,关闭每一个 Activity 即可。2、发送特定广播:在需要结束应用时,发送一个特定的广播,每个Activity 收到广播后,关闭即可。 如果后台的Activity 由于某原因被系统回收了,如何在被系统回收之前保存当前状态? 被回收前调用onSaveInstanc

7、eState()方法保存当前状态。 两个Activity 之间怎么传递数据?在Intent 的对象中增加要传递的参数既可。在Intent 的对象的请求中加入键值对,对象名字.putExtra(键值对的名字,键值对的值); 在另一个Activity 中将Intent 请求中的数据取出来:Intent intent=getIntent();/String value = intent.getStringExtra(testIntent/将testIntent对应的值赋值给value 什么是Activity?通俗一点说Activity 就是一个界面,这个界面里面可以放置各种控件。Activity 的

8、界面也是用xml 文件表示的,放置在res-layout 下面。每生成一个新的Activity 后,我们需要在AndroidManifest.xml 中注册一下这个activity怎么在启动一个Activity 时就启动一个service? 将启动Service 的语句放在onCreate()方法中。 同一个程序,但不同的Activity 是否可以放在不同的Task 任务栈中?可以放在不同的Task 中。需要为不同的activity 设置不同的taskaffinity属性,启动activity 的Intent 需要包含FLAG_ACTIVITY_NEW_TASK 标记。 Activity 怎么

9、和service 绑定,怎么在activity 中启动自己对应的service? 1、Activity能进行绑定得益于Service的接口。为了支持Service的绑定,实现onBind方法。 2、Service 和Activity 的连接可以用ServiceConnection来实现。你需要实现一个新的ServiceConnection,重写onServiceConnected和onServiceDisconnected方法,一旦连接建立,你就能得到Service 实例的引用。3、执行绑定,调用bindService方法,传入一个选择了要绑定的Service 的Intent(显式或隐式)和一

10、个你实现了的ServiceConnection实例 什么是Service 以及􏰁述下它的生命周期。Android Service 是运行在后台的代码,不能与用户交互,可以运行在自己的进程,也可以运行在其他应用程序进程的上下文里。需要通过某一个Activity 或者其他Context 对象来调用, Context.startService() 和Context.bindService()。如果在Service 执行耗时的操作需要启动一个新线程来执行。Android Service 只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动

11、 Service 时,先后调用了onCreate(),onStart()这两个方法,当停止 Service 时,则执行onDestroy()方法,这里需要注意的是,如果 Service 已经启动了,当我们再次启Service 时, 不会在执行onCreate()方法,而是直接执行onStart()方法。 Service 有哪些启动方法,有什么区别,怎样停用Service?两种启动Service 的方式Context.startService() 和Context.bindService()。区别为Context.startService():Service 会经历onCreate -onSta

12、rt(如果 Service 还没有运行, 则android 先调用onCreate()然后调用onStart();如果 Service 已经运行,则只调用onStart(), 所以一个Service 的onStart方法可能会重复调用多次 );stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service 会一直在后台运行。该Service 的调用者再启动起来后可以通过stopService关闭ServiceContext.bindService():Service 会经历onCreate() -onBind(),onBind将

13、返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service 运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和 Service 绑定在一起,Context 退出了,Srevice就会调用onUnbind -onDestroyed相应退出,所谓绑定在一起就共存亡了。停用service 使用context.stopService() 不用service,B页面为音乐播放,从A 跳转到B,再返回,如何使音乐继续播放? a 使用startActivityForResult() 方法开启b,b类结束时调用finish();a 类的int

14、ent 有一个子activity 结束事件onActivityResult(),在事件里继续播放音乐 什么是IntentService?有何优点?IntentService也是一个Service,是 Service 的子类,IntentService和Service 有所不同,通过Looper和Thread 来解决标准Service 中处理逻辑的阻塞问题。优点:Acitivity的进程,当处理Intent 的时候,会产生一个对应的Service Android 的进程处理器现在会尽可能的不kill 掉你非常容易使用日历中IntentService的应用 什么时候使用Service?比如播放多媒

15、体的时候用户启动了其他Activity 这个时候程序要在后台继续播放,比如检测SD 卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。 Intent 传递数据时,可以传递哪些类型数据? Intent 间传送数据一般有两种常用的办法: 1.extra2.data.extra 可以用Intent.putExtra放入数据。新启动的Activity 可用Intent.getExtras取出来Bundle, 然后用Bundles.getLong, getInt, getBoolean, getString等函数来取放进入的值。而data 则是传输url。url可以是

16、指我们熟悉的http, ftp 等网络地址, 也可以指content 来指向ContentProvider􏰀供的资源。Intent.setData可以放入数据,Intent.getData可以取出数据。 说说Activity,Intent,Service是什么关系。一个Activity 通常是一个单独的屏幕,每一个Activity 都被实现为一个单独的类,这些类都是从Activity 基类中继承来的,Activity 类会显示由视图控件组成的用户接口,并对视图控件的事件做出响应。Intent 的调用是用来进行架构屏幕之间的切换的。Intent 是􏰁述应用想要

17、做什么。Intent 数据结构中两个最重要的部分是动作和动作对应的数据,一个动作对应一个动作数据。Android Service 是运行在后台的代码,不能与用户交互,可以运行在自己的进程,也可以运行在其他应用程序进程的上下文里。需要通过某一个Activity 或者其他Context 对象来调用。Activity 跳转到Activity,Activity启动Service,Service打开Activity 都需要Intent 表明跳转的意图,以及传递参数,Intent 是这些组件间信号传递的承载者。述一下Broadcast Receiver。Broadcast Receiver 用于接收并处理

18、广播通知(broadcast announcements)。多数的广播是系统发起的,如地域变换、电量不足、来电来信等。程序也可以播放一个广播。程序可以有任意数量的broadcast receivers 来响应它觉得重要的通知。broadcast receiver 可以通过多种方式通知用户:启动activity、使用NotificationManager、开启背景灯、振动设备、播放声音等,最典型的是在状态栏显示一个图标,这样用户就可以点它打开看通知内容。通常我们的某个应用或系统本身在某些事件(电池电量不足、来电来短信)来临时会广播一个Intent 出去,我们可以利用注册一个Broadcast R

19、eceiver 来监听到这些Intent 并获取Intent 中的数据。 在manifest 和代码中如何注册和使用broadcast receiver 。1)在 AndroidManifest.xml 中注册receiver android:Receiver1!-和Intent 中的action 对应-com.forrest.action.mybroadcast/receiver2)在代码中注册1. IntentFilter filter = new IntentFilter( / 和广播中Intent 的action 对应2. MyBroadcastReceiverbr = new MyB

20、roadcastReceiver();3. registerReceiver(new MyBroadcastReceiver(), filter); 请介绍下ContentProvider是如何实现数据共享的。ContentProvider是通过􏰀供Uri 来实现数据共享 请介绍下Android 的数据存储方式。Android 􏰀供了5 种方式存储数据: 使用SharedPreferences存储数据; 文件存储数据;SQLite 数据库存储数据;使用ContentProvider存储数据; 网络存储数据; 为什么要用ContentProvider?它和sq

21、l的实现上有什么差别?使用ContentProvider可以将数据共享给其他应用,让除本应用之外的应用也可以访问本应用的数据。它的底层是用SQLite 数据库实现的,所以其对数据做的各种操作都是以Sql实现,只是在上层􏰀供的是Uri。 请介绍下Android 中常用的五种布局。最常用的布局方式为LinearLayout、RelativeLayout、FrameLayout、TableLayoutAbsoluteLayout。其中LinearLayout和RelativeLayout是最常用的方式,他们可以通过在xml 配置文件或者代码中进行布局。FrameLayout最简单的

22、布局方式,放置的控件都只能罗列到左上角,控件会有重叠,不能进行复杂的布局。LinearLayou可以通过orientation 属性设置线性排列的方向是垂直(vertical)还是纵向(horizontal).每行或每列只有一个元素,可以进行复杂的布局。AbsoluteLayout可以让子元素指定准确的x/y 坐标值,并显示在屏幕上。AbsoluteLayout没有页边框,允许元素之间互相重叠(尽管不推荐)。他是绝对坐标,所以在实际中不􏰀倡使用。RelativeLayout允许子元素指定他们相对于其它元素或父元素的位置(通过ID 指定)。因此,你可以以右对齐,或上下,或置于屏

23、幕中央的形式来排列两个元素。元素按顺序排列, 因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。这个是相对于AbsoluteLayout的,采用的相对坐标,所以在实际中比较常用。TableLayout将子元素的位置分配到行或列中。一个TableLayout由许多的TableRow组成, 每个TableRow都会定义一个row 。TableLayout容器不会显示row 、column 或cell 的边框线。每个row 拥有0 个或多个的cell ;和html 中的table 差不多。在实际中也经常使用。有的时候我们也会用到GridView,就像我们手机屏

24、幕上摆放的各个图标应该就是用GridView排版的。Padding 是文字相对于边框,而Margin 是边框相对于父窗体。 谈谈UI 中, Padding 和Margin 有什么区别?Padding 是文字相对于边框,而Margin 是边框相对于父窗体。 AIDL 的全称是什么?如何工作?能处理哪些类型的数据?AIDL 是一种接口定义语言,用于约束两个进程间的通信规则,供编译器生成代码,实现Android 设备上的进程间通信。进程之间的通信信息首先会被转换成AIDL 协议消息,然后发送给对方,对方受到AIDL 协议消息后再转换成相应的对象。AIDL 支持的类型包括Java 基础类型和Strin

25、g,List,Map,CharSequence,如果使用自定义类型,必须实现Parcelable接口。 如何加载的音乐信息,如何改善其效率。Android 系统􏰀供了MediaScanner,MediaProvider,MediaStore等接口,并且􏰀供了一套数据库表格,通过Content Provider 的方式􏰀供给用户。当手机开机或者有SD 卡插拔等事件发生时,系统将会自动扫􏰁SD 卡和手机内存上的媒体文件,如audio,video,图片等, 将相应的信息放到定义好的数据库表格中。改善效率可以从界面需要查询必备数据

26、,不需要的不进行查询。 启动应用后,改变系统语言,应用的语言会改变么?不会 Android 程序与Java 程序的区别?android 程序是Java 编写的,但程序使用的android 开发的API,就是andriod的库。 dvm的进程和Linux 的进程, 应用程序的进程是否为同一个概念DVM 指dalivk的虚拟机.每一个Android 应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM 都是在Linux 中的一个进程,所以说可以认为是同一个概念. 如何判断是否有SD 卡?在程序中访问SDCard,你需要申请访问SDCard的权限。在AndroidM

27、anifest.xml 中加入访问SDCard的权限如下:- 在SDCard中创建与删除文件权限-uses-permission android:android.permission.MOUNT_UNMOUNT_FILESYSTEMS-往SDCard写入数据权限-android.permission.WRITE_EXTERNAL_STORAGEEnvironment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手

28、机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。 谈谈Android 的优点和不足之处。Android 系统中GC 什么情况下会出现内存泄露呢? 出现情况:1. 数据库的cursor 没有关闭2.构造 adapter 时,没有使用缓存contentview衍生listview的优化问题-减少创建view 的对象,充分使用contentview,可以使用一静态类来优化处理getview的过程/3.Bitmap 对象不使用时采用recycle()释放内存 Android UI 中的View 如何刷新。一般只是希望在View 发生改变时对UI 进行重绘。你只需在Activity 中显式地调用View 对象中的invalidate()方法即可。系统会自动调用 View 的onDraw()方法。什么是ANR 如何避免它?android 中的动画有哪几类,它们的特点和区别是什么?两种,一种是Tween 动画、还有一种是Frame 动画。Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame 动画,传统的动画方法, 通过顺序的播放排列好的图片来实现,类似电影。 handler

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1