admin 管理员组文章数量: 1086019
2024年6月18日发(作者:编程专业哪个学校最好)
常见Android面试题及答案(详细整理)
1. 请描述一下Activity 生命周期。
答: 如下图所示。共有七个周期函数,按顺序分别是: onCreate(),
onStart(), onRestart(), onResume(), onPause(),onStop(),
onDestroy()。
onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle
的形式提供对以前存储的任何状态的访问。
onStart(): Activity变为在屏幕上对用户可见时调用。
onResume(): Activity开始与用户交互时调用(无论是启动还是重
新启动一个活动,该方法总是被调用。
onPause(): Activity被暂停或收回cpu和其他资源时调用,该方
法用户保护活动状态的,也是保护现场。
onStop(): Activity被停止并转为不可见阶段及后续的生命周期事
件时调用。
onRestart(): Activity被重新启动时调用。该活动仍然在栈中,而
不是启动新的Activity。
1、完整生命周期: 即从一个Activity从出现到消失,对应的周期
方法是从onCreate()到onDestroy()。
2、可见生命周期: 当Activity处于可以用户看见的状态,但不一
定能与用户交互时,将多次执行从onStart()到onStop()。
3、前景生命周期: 当Activity处于Activity栈最顶端,能够与其
他用户进行交互时,将多次执行从onResume()到onPause()。
2. 两个Activity之间跳转时必然会执行的是哪几个方法。
答: 两个Activity之间跳转必然会执行的是下面几个方法。
onCreate()//在Activity生命周期开始时调用。
onRestoreInstanceState()//用来恢复UI状态。
onRestart()//当Activity重新启动时调用。
onStart()//当Activity对用户即将可见时调用。
onResume()//当Activity与用户交互时,绘制界面。
onSaveInstanceState()//即将移出栈顶保留UI状态时调用。
onPause()//暂停当前活动Activity,提交持久数据的改变,停止
动画或其他占用GPU资源的东西,由于下一个Activity在这个方法返
回之前不会resume,所以这个方法的代码执行要快。
onStop()//Activity不再可见时调用。
onDestroy()//Activity销毁栈时被调用的最后一个方法。
3. 横竖屏切换时候Activity的生命周期。
答: 1、不设置Activity的android: configChanges时,切屏会重
新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
2、设置Activity的android: configChanges=“orientation”
时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
3、设置Activity的android:
configChanges=“orientation|keyboardHidden”时,切屏不会重
新调用各个生命周期,只会执行onConfiguration方法
4. 如何将一个Activity设置成窗口的样式。
答: 第一种方法,在文件中,可以新建如下的类似
Dialog的style。
。
第二种方法,在中在需要显示为窗口的
Activity中添加如下属性: android:
theme=“@style/ctivity”即可。也可以直接添加对
应需要展示为Dialog style的Activity的android: theme属性为
android: theme=“@ android: style/”。
5. 两个Activity之间怎么传递数据?
答: 可以在Intent对象中利用Extra来传递存储数据。
在Intent的对象请求中,使用putExtra(“键值对的名字”,”键
值对的值”);在另外一个Activity中将Intent中的请求数据取出来:
Intent intent = getIntent();
String value = ingExtra(“testIntent”);
6. 怎么让在启动一个Activity是就启动一个service?
答: 首先定义好一个service,然后在Activity的onCreate里面进
行连接并bindservice或者直接startService。
7. Activity怎么和service绑定,怎么在activity中启动自己对应
的service?
答: 1、activity能进行绑定得益于Serviece的接口。为了支持
Service的绑定,实现onBind方法。
2、Service和Activity的连接可以用ServiceConnection来实现。
需要实现一个新的ServiceConnection,重现onServiceConnected
和OnServiceDisconnected方法,一旦连接建立,就能得到Service
实例的引用。
3、执行绑定,调用bindService方法,传入一个选择了要绑定的
Service的Intent(显示或隐式)和一个你实现了的ServiceConnection
的实例
8.什么是Service以及描述下它的生命周期。Service有哪些启动
方法,有什么区别,怎样停用Service?
答: Android Service是运行在后台的代码,不能与用户交互,可
以运行在自己的进程,也可以运行在其他应用程序进程的上下文里。
需要通过某一个Activity或者Context对象来调用。Service有两个启
动方法,分别是ervice()和rvice()。如
果在Service执行耗时的操作需要启动一个新线程来执行。
Android Service只继承了onCreate(), onStart(),onDestroy()三
个方法,当我们第一次启动Service时,先后调用onCreate(),
onStart()这两个方法,当停止Service时,则执行onDestroy()方法
时。如果Service已经启动了,当我们再次启动Service时,不会再执
行onCreate()方法,而是直接执行onStart()方法。
9. 什么时候使用Service?
答: 比如播放多媒体的时候,用户启动了其他Activity,这个时候
程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台
记录你的地理信息位置的改变等等。
10. 请描述一下Intent 和 Intent Filter。
答: Intent在Android中被翻译为”意图”,他是三种应用程序基
本组件-Activity,Service和broadcast receiver之间相互激活的手段。
在调用Intent名称时使用ComponentName也就是类的全名时为显
示调用。这种方式一般用于应用程序的内部调用,因为你不一定会知
道别人写的类的全名。而Intent Filter是指意图过滤,不出现在代码
中,而是出现在android Manifest文件中,以的形式。(有一个例外
是broadcast receiver的intent
filter是使用erReceiver()来动态设定的,其中
intent filter也是在代码中创建的)
一个intent有action,data,category等字段。一个隐式intent
为了能够被某个intent filter接收,必须通过3个测试,一个intent
为了被某个组件接收,则必须通过它所有的intent filter中的一个。
11. Intent传递数据时,可以传递哪些类型数据?
答: intent间传送数据一般有两种常用的方法: 1、extra 2、data。
extra可以用ra放入数据。新启动的Activity可用
ras
值。
Data则是传输url。url可以是指我们熟悉的http,ftp等网络地
址,也可以指content来指向ContentProvider提供的资源。
a可以放入数据,a可以取出数据。
12. 说说Activity,Intent,Service是什么关系 ?
答: 一个Activity通常是一个单独的屏幕,每一个Activity都被实
现为一个单独的类,这些类都是从Activity基类中继承而来的。
Activity类会显示由视图控件组成的用户接口,并对视图控件的事件做
出响应。
Intent的调用是用来进行屏幕之间的切换。Intent描述应用想要
做什么。Intent数据结构中两个最重要的部分是动作和动作对应的数
据,一个动作对应一个动作数据。
Service是运行在后台的代码,不能与用户交互,可以运行在自己
取出Bundle,然后用
g,getInt,getBoolean,getString等函数来取放进去的
的进程里,也可以运行在其他应用程序进程的上下文里。需要一个
Activity或者其他Context对象来调用。
Activity跳转Activity,Activity启动Service,Service打开
Activity都需要Intent表明意图,以及传递参数,Intent是这些组件
间信号传递的承载着。
13. 请描述一下BroadcastReceiver。
答: Broadcast Receiver用于接收并处理广播通知(broadcast
announcements)。多数的广播是系统发起的,如地域变换、电量不
足、来电短信等。程序也可以播放一个广播。程序可以有任意数量的
broadcast receivers来响应它觉得重要的通知。Broadcast receiver
可以通过多种方式通知用户: 启动activity、使用
NotificationManager、开启背景灯、振动设备、播放声音等,最典
型的是在状态栏显示一个图标,这样用户就可以点它打开看通知内容。
通常我们的某个应用或系统本身在某些事件(电池电量不足、来电短信)
来临时会广播一个Intent出去,我们利用注册一个broadcast
receiver来监听这些Intent并获取Intent中的数据。
14. 在manifest和代码中如何注册和使用 broadcast receiver 。
答: 在android的manifest中注册
在代码中注册
1、 IntentFilter filter = new
IntentFilter(“dcast”);//和广播中
Intent的action对应;
2、 MyBroadcastReceiver br= new MyBroadcastReceiver();
3、 registerReceiver(br, filter);
15. 请介绍下ContentProvider是如何实现数据共享的。
答: 一个程序可以通过实现一个Content provider的抽象接口将
版权声明:本文标题:常见Android面试题及答案(详细整理) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1718641658a725005.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论