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的抽象接口将


本文标签: 调用 用户 方法 启动 执行