Lang:简体中文

安卓基础面试题及答案

日期:2025-09-08 / 来源:面试宝典

涵盖多方面知识,助力面试通关

在安卓开发的面试中,基础问题是考察的重点。下面为大家整理了一些常见的安卓基础面试题及答案。

activity相关问题

问题:activity的生命周期是什么样的?

答案:activity的生命周期包含多个状态。当activity第一次启动时,依次会调用oncreate、onstart、onresume方法。oncreate用于初始化activity的布局和数据;onstart表示activity已经可见,但还没有焦点;onresume表示activity获得焦点,用户可以与之交互。当activity被部分遮挡或者失去焦点时,会调用onpause方法;当activity完全不可见时,会调用onstop方法。如果activity被销毁,会调用ondestroy方法。当activity从不可见变为可见时,会调用onrestart、onstart、onresume方法。例如,当用户打开一个新的activity覆盖当前activity时,当前activity会依次调用onpause、onstop方法;当用户返回当前activity时,会依次调用onrestart、onstart、onresume方法。

intent相关问题

问题:intent的作用是什么,有哪些类型?

答案:intent是安卓中用于在不同组件(如activity、service、broadcastreceiver)之间传递消息的一种机制。它可以启动组件、传递数据等。intent分为显式intent和隐式intent。显式intent明确指定要启动的组件的类名,例如:

intent intent = new intent(this, secondactivity.class);startactivity(intent);这段代码就是通过显式intent启动了secondactivity。隐式intent则不指定具体的组件类名,而是通过设置动作(action)、类别(category)、数据(data)等信息,让系统去寻找合适的组件来处理。例如,要打开网页可以使用以下隐式intent:

intent intent = new intent(intent.action_view, uri.parse("https://www.example.com"));startactivity(intent);

view相关问题

问题:view的绘制流程是怎样的?

答案:view的绘制流程主要包括测量(measure)、布局(layout)和绘制(draw)三个阶段。测量阶段,系统会调用view的onmeasure方法,确定view的大小;布局阶段,系统会调用view的onlayout方法,确定view在父容器中的位置;绘制阶段,系统会调用view的ondraw方法,将view绘制到屏幕上。例如,自定义view时,通常需要重写onmeasure、onlayout和ondraw方法来实现特定的绘制效果。

service相关问题

问题:service有哪些启动方式,它们的区别是什么?

答案:service有两种启动方式,分别是startservice和bindservice。使用startservice启动service时,service会在后台一直运行,直到调用stopservice或者service自身调用stopself方法停止。例如:

intent intent = new intent(this, myservice.class);startservice(intent);使用bindservice启动service时,service会与调用者绑定,当调用者销毁时,service也会随之销毁。例如:

intent intent = new intent(this, myservice.class);bindservice(intent, connection, context.bind_auto_create);其中,connection是一个serviceconnection对象,用于与service进行交互。

broadcastreceiver相关问题

问题:broadcastreceiver有哪些注册方式,它们的区别是什么?

答案:broadcastreceiver有静态注册和动态注册两种方式。静态注册是在androidmanifest.xml文件中进行注册,这种方式在应用安装时就会注册,即使应用没有启动,也能接收到广播。例如:

动态注册是在代码中进行注册,需要在activity或service中调用registerreceiver方法。这种方式需要在activity或service销毁时调用unregisterreceiver方法取消注册,否则会造成内存泄漏。例如:

myreceiver receiver = new myreceiver();intentfilter filter = new intentfilter();filter.addaction("com.example.my_broadcast");registerreceiver(receiver, filter);

以下为推荐内容

微信二维码