`
zhonglunshun
  • 浏览: 138142 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

安卓面试易考题(一)

阅读更多

安卓面试精华(Activity部分)

过几天小弟要去面试了,当然免不了要好好复习下功课,其实很多东西也不是特别清楚,今天都当作一个回顾和巩固,希望我的这篇文章能对即将去找工作的同学有所帮助。

 

1.

Q:什么是activity

虽然这个问题现在不流行问了,但是还是做好准备,有备无患嘛。

A:      

1).activity是四大组件之一,一般情况下,一个和用户交互的界面就对应有一个activity

2).ActivityContext的子类,同时它实现了Window.callbackkeyEvent.callback,正因为如此,人们才能够实现与界面交互。比如我们熟悉的点击事件Button.setOnClickListener{}

3).我开发常用的activitylistActivity(数据展示的)TabActivity(制作表格),PreferenceActivity(常用来写设置界面),有时候一些Activity都有一些共同的特点或者相同功能的时候,我会自己定义一个BaseActivity

 

2.

Q请说说Activity的生命周期?这个问题问得还挺多的)。

A:我们三步走:

第一步,解释:

生命周期描述的是一个类从创建到消亡中会执行的方法,(注意,市讲的时一个个会执行的方法),在这个过程中,会针对不同的生命阶段调用不同的方法。其实讲白了就是一个个方法的执行过程。

第二步,如何执行

接下来我们就要说都执行了哪些方法:

Activity从创建到销毁有多种状态,从一种状态到另一种状态会执行相应的方法,包括Oncreate()—创建,OnDestory—销毁;OnStart()---可见,OnStop()—不可见;OnResume—获取焦点,OnPause---失去焦点;这些方法是两两对应,有一个执行了肯定有对应的执行。

这里要注意一点,弹出对话框不会执行以上任何方法,理由是对话框本身就是Activity的一部分。

最后还有一个方法,OnRestart(),这个方法在ActivityonStop后,但是没有被onDestroy,在再次启动此Activity时就调用onRestart(而不再调用onCreate)方法;如果是被销毁了,那就是调用onCreate()方法。

第三步:用自己做过的项目来阐述以上怎么用法。比如说:

客户端每次进入某个界面的时候都要看到最新的数据,这个刷新列表的操作 就放在onStart()的方法里面.onStart()里面写填充数据的内容就ok了。

做音乐播放器的时候,需要处理来电情况,那就虚报把播放断点保存起来,并把播放声音置位0,这些工作就可以放在OnStop里面做,然后要启动的时候,恢复断点,设置音量这些可以在OnStart里面做。

我们在读文档的时候,会发现onPostResume()OnPostCreate()这两个生命周期的方法,不过开发的时候没有用到过.

 

3.

Q:两个Activity之间跳转执行哪些方法?

A

一般情况比如说有两个activity,分别叫A,B ,当在A里面激活B组件的时候, A 会调用 onPause()方法,然后B 调用onCreate() ,onStart(), OnResume() ,如果B覆盖了A,我们就看不到A了,那A还会调用OnStop方法,但是如果B透明的,还能看到底下的A的话就不会调用OnStop,因为只有不可见才会调用OnStop()

 

4.

Q说说横竖屏切换时候Activity的生命周期?

A:这个和配置的清单文件有关系。

1.如果不设置Activityandroid:configChanges切换屏幕时候会调用各个生命周期,依次是

onPause(),onStop(),OnDestory(),onCreate(),OnResume(),onStart();

意思就是你先让他停止,然后就让它不可见,这样就可以销毁了,然后在重新创建,接着就是回去焦点,获取到之后就显示出来。

2.  当你设置了Activityandroid:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法,通常作游戏开发,方向都是写死了的。

 

5.

如何把Activity设置成窗口样式?

         我们只需要在清单文件里面配置,你可以使用Android系统提供的dialog样式,也可以自己在value文件夹下的style.xml自己定义一个样式,然后设置到Activity上。

 

 6.

Q:你后台的Activity被系统回收怎么办?如果后台的Activity由于某原因被系统回收可了,如何在被系统回收之前保存当前状态?

A:我们来看下Activity是怎么存放的:我们很容易看到,越是在栈顶的 不容易被回收,系统会优先回收栈底的activity,要想保存好数据,我们需要复写一个方法:onSaveInstanceState(Bundle outState),相信这个方法大家都不陌生,因为我们写ActivityonCreate()基本都见到了调用这个方法super.onCreate(savedInstanceState);其实这个方法调用就是从保存的数据里面取出来:每次执行oncreate方法都会看Bundle是不是空的,不是就把数据取出来,取数据调用的就是super.onCreate(savedInstanceState);这个东西在应用在保存用户id上很常见。

 

protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putLong("id", 1234567890);
}

 

 

 

7.Q:如何退出程序

A:你看我们要是每次退出程序都是 一个一个页面摁下来,界面一朵用户体验就不好了,我们退出可以有两种常用的方法:

1.      我们通过抛异常,然后把这个异常的线程杀死的方法,也就是在异常捕获的代码中写android.os.Process.killProcess(android.os.Process.myPid());这样子就能实现介绍程序而不会出现强制退出的界面。

2.       第二种就是新建定义一个App类,里面 整个应用程序的界面,在每一个Activity执行onCreate方法的时候,就把创建的Activity加入到全局的Activity集合里面,然后在你点击退出的里面把Activity一个个从集合里面移除就行了。具体实现如下:

a)   我们需要写一个MyApplication.java

public class MyApplication extends Application {
public List<Activity> activities;
@Override
public void onCreate() {
    super.onCreate();
    activities = new ArrayList<Activity>();
}
}

 

然后在每一个OnCreate里面添加activity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyApplication myApplication = new MyApplication();
        myApplication.activities.add(this);
}

 

 

接下来就是在要实现退出的地方移除所有Activity

for(Activity activity: lists)
{
    activity.finish();
}

 今天不早了,总结了几个消息,希望能对大家有帮助,明天继续。

2
1
分享到:
评论

相关推荐

    阿里巴巴Android面试题集(答案解析)1

    阿里巴巴的Android面试题集主要涵盖了计算机基础、数据结构与算法、Java编程、Android技术以及一些扩展领域的知识。以下是对这些知识点的详细解析: **第一章 计算机基础面试题** 这部分通常包括网络、操作系统和...

    联想Android面试题.pdf

    Android 面试题知识点总结 根据提供的文件信息,我们可以总结出以下知识点: 1. Activity 生命周期: * onCreate(Bundle savedInstanceState):创建 activity 时调用,用于初始化 activity。 * onStart():...

    Android70道面试题汇总面试不再愁.pdf

    Android面试题汇总 本文将对 Android 相关的面试题进行总结和解释,涵盖了 Android 开发中的多个方面,包括内存回收、异常处理、Math函数、Activity 生命周期、Intent 传递数据、SAX 解析 XML 文件、自定义 Style、...

    安卓考试及面试题

    这份"安卓考试及面试题"的资料集将涵盖一系列关键知识点,帮助开发者和初学者强化基础,提升技能。以下是对这些主题的详细阐述: 一、安卓系统架构 了解安卓系统的分层结构是基础,包括Linux内核层、硬件抽象层...

    Android面试题 答案精编第三版

    《Android面试题 答案精编第三版》是一本专为Android开发者准备的面试指南,旨在帮助读者全面掌握Android领域的核心知识点,并在面试中表现出色,顺利拿到理想的offer。这本书包含了众多面试中常见的问题,涵盖了从...

    Android面试题(详细答案).doc

     13.android 中下列属于Intent的作用的是(c)  A、实现应用程序间的数据共享  B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失  C、可以实现界面间的切换,可以...

    android基础面试考试

    android基础知识,android期末考试试题,android面试.

    面试前必做的题和认证考试题

    在准备面试和认证考试的过程中,理解并掌握相关知识点至关重要。面试和认证考试是评估个人技能、知识和经验的重要方式,对于求职者或寻求职业发展的人来说,这些都是通向成功的关键步骤。 首先,我们要明白面试通常...

    百度Android工程师职位面试考题.rar

    百度Android工程师职位面试考题

    Android面试试题集合.rar

    安卓(Android)是一种操作系统,由谷歌公司开发和维护。下面是安卓的历史概述: - 2003年,安卓项目在美国创立,旨在开发基于Linux的智能手机操作系统。 - 2005年,谷歌公司收购了安卓公司,并开始对移动设备市场...

    Android高薪面试题集50道

    android 系统架构? 答:1)应用程序层 java 语言 应用程序开发 2)应用程序框架层 java 语言 OS 定制 framework 层开发 3)系统运行库层 C C++ 实现 so 库 4)Linux 内核层

    Java精选面试题,题库非常全面,累计 20000+ 道面试题

    2022年面试题,Java基础面试题、JVM面试题、并发编程与线程面试题、设计模式面试题、SpringBoot面试题、SpringCloud面试题、MyBatis面试题、Redis面试题等。包括Java基础、Java集合、Java并发、JVM、Java WEB、设计...

    Android面试必备笔试题.pdf

    【Android数据存储方式】 ...以上是Android面试中常见的一些知识点,涵盖了数据存储、架构模式、线程通信、组件交互以及UI性能优化等多个方面。理解和掌握这些知识点对于Android开发者来说至关重要。

    Android面试题经典.pdf

    在Android面试中,涵盖的知识点广泛且深入,包括Android系统架构、进程管理、内存管理、实时操作系统、短信机制、动画实现、线程通信、设计模式以及应用开发实践等多个方面。以下是对这些知识点的详细说明: 1. **...

    一线互联网大厂Android高级开发面试题以及解析整理(1307页)

    一线互联网大厂Android高级开发面试题以及解析整理(1307页)

    2019Android Framework 高频面试题总结.pdf

    Android操作系统是目前使用最为广泛的移动操作系统之一,其内部结构非常复杂,Android Framework是Android系统架构中的核心部分,它为开发者提供了编写应用程序所需要的API和运行环境。了解Android Framework的实现...

    Android 面试资料

    这份"Android面试资料"集合了经典面试考题,旨在帮助你全面准备各种Android面试,确保你在面试中无懈可击,战无不胜。以下是对每个文件内容的详细解读: 1. **Android基础面试题.docx**:这个文档可能包含了Android...

    Android面试题总结强劲版.pdf

    Android面试题总结强劲版 Android应用开发中,Activity生命周期是非常重要的概念。Activity生命周期指的是Activity从创建到销毁的整个过程中经历的各个阶段。这些阶段包括onCreate()、onStart()、onResume()、...

    SCJP模拟题104道 考你的java知识 对你面试有帮助

    这些题目涵盖了Java编程语言的基础和核心概念,是准备SCJP(Sun Certified Programmer for the Java 2 Platform)考试或提升Java面试技巧的重要资源。下面将详细解释每个问题涉及的知识点: 1. 第一题考察类型转换...

    PCCW电讯盈科面试题

    通过对"PCCW Solutions 初级开发人员面试考题V1.8"的分析,我们可以深入理解该公司对于初级开发人员的技术要求和能力评估。 首先,面试题目通常包括基础编程知识的考察,如Java、Python、C++等常见编程语言的基本...

Global site tag (gtag.js) - Google Analytics