发布时间 : 星期四 文章安卓面试题及答案详解更新完毕开始阅读
??请??一下Intent 和Intent Filter。
Intent 在Android 中被翻译为\意图\熟语来讲就是目的,他们是三种应用程序基本组件—activity,service和broadcast receiver 之间互相激活的手段。在调用Intent 名称时使用ComponentName也就是类的全名时为显示调用。这种方式一般用于应用程序的内部调用, 因为你不一定会知道别人写的类的全名。我们来看看隐式Intent 怎么用? 首先我们先配置我们的Activity 的Intent Filter
android:name=\
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()方法。