Android面试题整理(1)
1、Activity的生命周期
onCreate(Bundle saveInstanceState):创建activity时调用。
onStart():activity可见时调用
onResume():activity与用户交互时调用
onRestart():当一个activity再次启动之前调用该方法
onPause():当前暂停、或调用另一个activity之前调用该方法。
onStop():当前activity变为不可见时调用该方法
onDestory():当前activity被销毁之前调用该方法
2、横竖切换时候Activity的生命周期
不设置activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏
时会执行一次,切竖屏时会执行两次
设置activity的android:configChanges="orientation"时,切屏会重新调用各个生命周期
但切横屏与竖屏都之会执行一次
设置activity的android:configChanges="orientation|keybordHidden"时,切屏不会
重新调用各个生命周期,只会执行onConfigurationChanged方法
3、如何将一个activity设置成窗口模式。
将activity的属性android:theme="@style/Theme.Dialog"
4、当后台的activity被系统回收怎么办
系统会帮我们记录下回收前activity的状态,再次调用被回收的activity就要重新调用
onCreate()方法,不同直接启动的是这次onCreate()里是带参数的savedInstanceSate;一般
可以判断其是否为null,不为null时可以使用它来恢复到回收前的状态。
5、如何退出activity?如何安全退出已调用的多个activity的application
用finish()方法退出activity
在结束应用时,发送一个特定的广播,相对应的activity收到广播后,关闭即可。
6、后台的activity由于某种原因被系统回收了,如何在被系统回收之前保存当前的状态
被回收之前调用的onSaveInstanceState()方法保存当前的状态
7、怎么在启动一个activity时就启动一个service
将启动的service的语句放在onCreate()方法中。
8、Activity怎么和Service绑定,怎么在activity中启动自己对应的Service
Activity能进行绑定得益于Service的接口。在实现Service必须实现onBind方法
Service和Activity的连接可以用ServiceConnection来实现。在实现一个新的ServiceConnection
,重写onServiceConnected和onServiceDisconnected方法,一旦连接建立,就能得到Service实例的引用。
执行绑定,调用bindServcie方法,传入一个选择了要绑定的Service的Intent和一个实现了的ServiceConnection实例
9、什么是Service以及描述下它的生命周期
Service是运行在后台的android组件,没有用户界面,不能与用户交互,可以运行在自己的进程,也可以运行在其他应用程序的上下
文里。
Service随着启动形式的不同,其生命周期稍有差别。当用Context.startService()来启动时,Service的生命周期依次为:oncreate——>
onStartCommand——>onDestroy 当用Context.bindService()启动时:onStart——>onBind——>onUnbind——>onDestroy
10、Service有哪些启动方法,有什么区别,怎么停用Service?
Service启动方式有两种;一是Context.startService和Context.bindService。
区别是通过startService启动时Service组件和应用程序没多大的联系;当用访问者启动之后,如果访问者不主动关闭,Service就不会关闭,Service组件之间
因为没什么关联,所以Service也不能和应用程序进行数据交互。而通过bindService进行绑定时,应用程序可以通过ServiceConnection进行数据交互。在实现Service
时重写的onBind方法中,其返回的对象会传给ServiceConnection对象的onServiceConnected(ComponentName name, IBinder service)中的service参数;也就是说获取
了serivce这个参数就得到了Serivce组件返回的值。Context.bindService(Intent intent,ServiceConnection conn,int flag)其中只要与Service连接成功
conn就会调用其onServiceConnected方法
停用Service使用Context.stopService
11、不用Service,B页面为音乐播放,从A跳到B,再返回,如何使音乐继续播放?
A使用startActivityForResult方法开启B,B类结束时调用finish;A类的Intent有一个子Activity结束事件onActivityResult,在这个事件里继续播放音乐。
12、什么是IntentService?有何有点?
IntentService也是一个Service,是Service的子类;
IntentService和Service有所不同,通过Looper和Thread来解决标准Service中处理逻辑的阻塞的问题
优点:Activity的进程,当处理Intent的时候,会产生一个对应的Service,Android的进程处理器现在会尽可能的不kill掉你。
13、什么时候使用Service?
比如播放多媒体的时候用户启动了其他的Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,在或者在后台记录你地理位置的改变等等
14、说说Activity、Intent、Service是什么关系
一个Activity通常是一个单独的屏幕,每一个Activity都被实现为一个单独的类,这些类都是从Activity基类中继承来的,Activity类显示有视图控件组成的用户接口
,并对视图控件的事件做出响应。
Intent的调用是用来进行架构屏幕之间的切换的。Intent是描述应用想要做什么。Intent数据结果中最重要的部分是动作和动作对应的数据,一个动作对应一个动作数据。Android
Service是运行在后台的代码,不能与用户交互,可以运行在自己的进程,也可以运行在其他应用程序的上下文里。需要通过某一个Activity或其他Context对象来调用。 Activity\
跳转到Activity,Activtiy启动Service,Service打开Activity都需要Intent表明跳转的意图,以及传递参数,Intent是这些组件间信号传递的传承者。
15、请介绍ContentProvider是如何实现数据共享的
ContentProvider是通过提供Uri来实现数据共享
16、请介绍下android的数据存储方式
Android提供了5种方式存储数据
使用SharedPreferences存储数据;
文件存储数据;
SQLite数据库存储数据
使用ContentProvider存储数据;
网络存储数据
17、android中常用的五种布局
线性布局LineayLayout、相对布局RelativeLayout、帧布局FrameLayout、表格布局TablElAYOUT,绝对布局AbsoluteLayout。
18、谈谈UI中,Padding和Margin有什么区别?
Padding是文字相对于边框,而Margin是边框相对于父窗体
19、请解释一下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。
子线程借用主线程里面的handler发送一条消息,这个消息会被线程放入消息队列里面,也就是message queue,主线程里面有一个轮询器looper会发现
消息队列里面有一条消息时,会调用handler消息处理执行handlermessage的方法去处理这个消息,这个handlemessage的方法可以更新ui控件内容了
20、AIDL的全称是什么?如何工作?能处理哪些类型的数据?
ADIL是一种接口定义语言,用于约束两个进程之间的通信规则,供编译器生成代码,实现android设备之间的进程通信。
进程之间的通信信息首先会被转换成AIDL协议消息,然后发送给对方,对方受到AIDL协议消息后在转换成相应的对象。AIDL支持类型包括java基础类型和String,List,Map,CharSequence,如果
使用自定类型,必须实现Parcelable接口
Android面试题整理(1)的更多相关文章
- Android面试题整理【转载】
面试宝典(5) http://www.apkbus.com/android-115989-1-1.html 面试的几个回答技巧 http://blog.sina.com.cn/s/blog_ad ...
- 19、android面试题整理(自己给自己充充电吧)
(转载,出处丢失,请原作者原谅,如有意见,私信我我会尽快删除本文) JAVA 1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问 ...
- Android ----------------- 面试题 整理 一
1. XML的解析方式都有哪些? 每一种解析方式的运行流程? 设XML为:<a>a<b>bc<c>c1</c></b></a> ...
- Android面试题整理
1. 请描述下Activity的生命周期. 2. 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态? 3. 如何将一个Activity设置成窗口的样 ...
- Android高级工程师面试题整理
这些题目是网友去百度.小米.乐视.美团.58.猎豹.360.新浪.搜狐等一线互联网公司面试被问到的题目.熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率. 主要分为以下几部分: (1)java ...
- Android面试题(文章内容来自他人博客)
腾讯面试题 1.int a = 1; int result = a+++3<<2; 2.int a = 2; int result = (a++ > 2)?(++a):(a+=3); ...
- 【Android进阶】Android面试题目整理与讲解(一)
这一篇文章专门整理一下研究过的Android面试题,内容会随着学习不断的增加,如果答案有错误,希望大家可以指正 1.简述Activity的生命周期 当Activity开始启动的时候,首先调用onCre ...
- 2017 Android 面试题 [ 基础与细节 ]
2017 Android 面试题 [ 基础与细节 ] 感谢@chuyao抛出的这些问题,平时业务代码写多了,很多基础的东西变得含糊不清了,这次裸辞出来找工作确实没有之前顺利,顺便求上海Android开 ...
- 金9银10,分享几个重要的Android面试题
说一下java多态的理解,以及接继承,和接口的理解 于哥在这里只讲多态,其他自己上网体会 对于多态的定义不同类的对象对统一函数做出不同对的响应或者动作.作用主要是消除类之间的耦合性,灵活性比较强,利于 ...
随机推荐
- 【转】System.Data.OracleClient requires Oracle client software version 8.1.7 or greater
安装完ASP.NET,Oracle9i客户端后,使用System.Data.OracleClient访问Oracle数据库如果出现这种错误:System.Data.OracleClient requi ...
- hdu 4349 Xiao Ming's Hope lucas
题目链接 给一个n, 求C(n, 0), C(n, 1), ..........C(n, n)里面有多少个是奇数. 我们考虑lucas定理, C(n, m) %2= C(n%2, m%2)*C(n/2 ...
- android--email发送邮件,文本还有附件形式的邮件
1.首先用的jar包为javaemail 下载地址: https://yunpan.cn/cB3kY8WIvcGtU (提取码:e042) 2.工具包 package com.kllayhello.u ...
- web开发注意的一些事
js命名不要包含"-",在chrome浏览器是测试发现,如果文件包含"-",即使指定js本地缓存了,还会向服务器发送请求. cookie path 区分大小写
- ie7下div覆盖在iframe上方,ie8就不行,怎么解决
<div style="position:relative;display:inline-block;width:178px;height:90px;z-index:9999;top: ...
- 怪兽z主机 驱动集
这里给买家朋友送上我们主机的驱动包. 1.主板驱动. 访问密码 f334 http://yunpan.cn/QNTGxehcnLBW5 2.AMD显卡催化剂 amd catalyst(没装的话,无法 ...
- Warning: Unable to send packet: Error with PF_PACKET send() [11]: Message too long (errno = 90)
今天在使用tcpreplay重放流量时,发现有的数据包没有发送成功: Warning: Unable to send packet: Error with PF_PACKET send() [215] ...
- 网页压缩gzip的问题及说明教程
关于网页压缩gzip的问题及说明教程 最近比较多人反应gzip的问题 在wdcp的后台里已经有gzip功能的选项,也就是说,只要在这里开启了,就已支持 但从最近的问题中发现,基本上都是使用一些在线检测 ...
- 如何判断一个变量是数组Array类型
在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...
- c#简单的调试信息、日志信息输出
public static void ErrorLog(string mssg) { string FilePath = "D:/logs/ErrorLog.txt"; try { ...