安卓面试题及答案详解

发布时间 : 星期四 文章安卓面试题及答案详解更新完毕开始阅读

??请??一下Intent 和Intent Filter。

Intent 在Android 中被翻译为\意图\熟语来讲就是目的,他们是三种应用程序基本组件—activity,service和broadcast receiver 之间互相激活的手段。在调用Intent 名称时使用ComponentName也就是类的全名时为显示调用。这种方式一般用于应用程序的内部调用, 因为你不一定会知道别人写的类的全名。我们来看看隐式Intent 怎么用? 首先我们先配置我们的Activity 的Intent Filter

android:name=\

这样在调用的时候指定Intent 的action,系统就是自动的去对比是哪个 intent-filter 符合我们的Activity,找到后就会启动 Activity。一个intent filter 是IntentFilter类的实例, 但是它一般不出现在代码中,而是出现在android Manifest 文件中, 以的形式. (有一个例外是 broadcast receiver 的intent filter 是使用

Context.registerReceiver()来动态设定的, 其intent filter 也是在代码中创建的.) 一个filter 有action, data, category 等字段. 一个隐式intent 为了能被某个intent filter 接受, 必须通过3 个测试. 一个intent 为了被某个组件接受, 则必须通过它所有的intent filter 中的一个.

请口述一下Activity 生命周期。onCreate(BundlesavedInstanceState):创建activity时调用。设置在该方法中,还以Bundle 的形式??对以前储存的任何状态的访问!onStart():activity 变为在屏幕上对用户可见时调用。onResume():activity 开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。onPause():activity 被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!onStop():activity 被停止并转为不可见阶段及后续的生命周期事件时调用。onRestart():重新启动 activity 时调用。该活动仍在栈中,

而不是启动新的活动。onDestroy():activity 被完全从系统内存中移除时调用,该方法被调用

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

onDestroy()//在 Activity 销毁钱被调用的最后一个方法。

? 横竖屏切换时候Activity 的生命周期。1、不设置 Activity 的

android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次2、设置 Activity 的

android:configChanges=\时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次3、设置 Activity 的

android:configChanges=\时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

? 5.如何将一个Activity 设置成窗口的样式。1、在你的 styles.xml 文件中可以新建一如下的类似Dialog 的style2、在 AndroidManifest.xml 中在你需要显示为窗口的activity 中添加如下属性: android:theme=\即可 也可以直接添加您对应需要展示为Dialog style 的Activity 的android:theme属性值为

android:theme=\。

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

? 如何退出Activity?如何安全退出已调用多个 Activity 的Application?用finish()方法退出 activity.在2.1 之前,可以使用

ActivityManager的restartPackage方法。它可以直接结束整个应用。在使用时需要权限android.permission.RESTART_PACKAGES。在2.2,这个方法失效了,可使用以下几个人工的方法

1、记录打开的 Activity:每打开一个Activity,就记录下来。在需要退出时,关闭每一个 Activity 即可。2、发送特定广播:在需要结束应用时,发送一个特定的广播,每个Activity 收到广播后,关闭即可。

? 如果后台的Activity 由于某原因被系统回收了,如何在被系统回收之前保存当前状态? 被回收前调用onSaveInstanceState()方法保存当前状态。

? 两个Activity 之间怎么传递数据?在Intent 的对象中增加要传递的参数既可。

在Intent 的对象的请求中加入键值对,对象名字.putExtra(\键值对的名字\键值对的值\在另一个Activity 中将Intent 请求中的数据取出来:

Intent intent=getIntent();//String value =

intent.getStringExtra(\将testIntent对应的值赋值给value ?什么是Activity?

通俗一点说Activity 就是一个界面,这个界面里面可以放置各种控件。Activity 的界面也是用xml 文件表示的,放置在res->layout 下面。每生成一个新的Activity 后,我们需要在AndroidManifest.xml 中注册一下这个activity

怎么在启动一个Activity 时就启动一个service? 将启动Service 的语句放在onCreate()方法中。

? 同一个程序,但不同的Activity 是否可以放在不同的Task 任务栈中?可以放在不同的Task 中。需要为不同的activity 设置不同的taskaffinity属性,启动activity 的Intent 需要包含FLAG_ACTIVITY_NEW_TASK 标记。

? Activity 怎么和service 绑定,怎么在activity 中启动自己对应的

service? 1、Activity能进行绑定得益于Service的接口。为了支持Service的绑定,实现onBind方法。 2、Service 和Activity 的连接可以用

ServiceConnection来实现。你需要实现一个新的ServiceConnection,重写onServiceConnected和onServiceDisconnected方法,一旦连接建立,你就能得到Service 实例的引用。3、执行绑定,调用bindService方法,传入一个选择了要绑定的Service 的Intent(显式或隐式)和一个你实现了的ServiceConnection实例

? 什么是Service 以及??下它的生命周期。Android Service 是运行在后台的代码,不能与用户交互,可以运行在自己的进程,也可以运行在其他应用程序进程的上下文里。需要通过某一个Activity 或者其他Context 对象来调用, Context.startService() 和Context.bindService()。如果在Service 执行耗时的操作需要启动一个新线程来执行。Android Service 只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动 Service 时,先后调用了onCreate(),onStart()这两个方法,当停止 Service 时,则执行onDestroy()方法,这里需要注意的是,如果 Service 已经启动了,当我们再次启Service 时, 不会在执行onCreate()方法,而是直接执行onStart()方法。

联系合同范文客服:xxxxx#qq.com(#替换为@)