Android面试题整理
android面试题大全
![android面试题大全](https://img.taocdn.com/s3/m/3138ab90b8f3f90f76c66137ee06eff9aef8492c.png)
android面试题大全在职场中,技术面试是一个重要的环节。
对于Android开发者而言,面试过程中遇到各种各样的问题是难免的。
为了帮助大家更好地应对Android面试,本文将介绍一些常见的Android面试题,供大家参考。
一、Java相关问题在Android开发中,Java是一门十分重要的编程语言。
以下是一些与Java相关的面试题:1. 什么是Java?请简单介绍Java的特点和优势。
2. Java的基本数据类型有哪些?3. Java的封装和继承是什么?它们有什么区别?4. 什么是接口(Interface)?它和抽象类(Abstract Class)有什么区别?5. Java中的多态是什么?请简单描述多态的实现原理。
二、Android基础知识问题除了Java,还有一些关于Android基础知识的问题,例如:1. 什么是Android?请简单介绍Android的特点和优势。
2. 请解释Activity、Fragment和Service的概念以及它们之间的关系。
3. 什么是Intent?它有哪几种类型?4. 请解释Activity的生命周期,并且简要描述每个生命周期方法的作用。
5. 什么是RecyclerView?请简单介绍它的作用和使用方法。
三、Android开发常用框架问题在Android开发过程中,使用各种框架可以提高开发效率。
以下是一些与Android开发常用框架相关的面试题:1. 请简单介绍Retrofit框架,并描述它的优点和使用方法。
2. 什么是RxJava?它有什么作用?3. 请简要介绍MVP和MVVM架构,并举例说明它们在Android开发中的应用场景。
4. 请简单介绍Glide图片加载框架,并描述它与其他图片加载框架的比较优势。
5. 什么是ORM框架?请简单介绍一种常用的Android ORM框架。
四、Android性能优化问题在Android开发过程中,性能优化是一个重要的方面。
安卓面试题
![安卓面试题](https://img.taocdn.com/s3/m/38e6844053ea551810a6f524ccbff121dc36c516.png)
安卓面试题一、安卓基础1. 请简述Android操作系统的架构。
Android操作系统采用分层架构设计,主要包括应用层、应用框架层、系统运行库层、Android运行时环境和Linux内核层。
应用层包含各种用户安装的应用程序;应用框架层为应用程序提供高级API接口;系统运行库层包含Android系统的各种C/C++库;Android运行时环境主要是指Dalvik虚拟机,负责运行应用程序;Linux内核层则负责底层的硬件驱动和资源管理。
2. 什么是Activity?请说明其生命周期。
Activity是Android中一个重要的组件,代表了一个单一的屏幕,用户可以在其中进行交互。
它的生命周期主要包括以下几个状态:onCreate()、onStart()、onResume()、onPause()、onStop()和onDestroy()。
这些状态对应Activity的不同阶段,开发者需要根据这些生命周期来管理Activity的创建、恢复、暂停、停止和销毁等操作。
3. 请解释什么是Intent,并举例说明其用途。
Intent是Android中用于组件间通信的一种机制。
它可以用来启动Activity、发送广播、启动服务等。
例如,当用户点击一个按钮查看详情时,可以通过Intent启动一个新的Activity来展示详细信息。
二、安卓开发1. 请描述如何创建一个新的Android项目。
首先,需要安装并打开Android Studio。
然后,选择“Create NewProject”选项,输入项目名称、保存位置、语言(Java/Kotlin)和最低API等级等信息。
接着,选择相应的模板,如Empty Activity、Login Activity等,最后点击“Finish”创建项目。
2. 请解释如何使用ListView来显示列表数据。
ListView是Android中用于显示垂直滚动列表的控件。
首先,在布局文件中添加ListView组件。
常见Android面试题及答案(详细整理)
![常见Android面试题及答案(详细整理)](https://img.taocdn.com/s3/m/5a72a8d19f3143323968011ca300a6c30c22f17a.png)
常见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重新启动时调用。
安卓面试题及答案详解版
![安卓面试题及答案详解版](https://img.taocdn.com/s3/m/27054c58eef9aef8941ea76e58fafab069dc44c1.png)
安卓面试题及答案详解版1. 问题:什么是Android操作系统?答案: Android操作系统是一种基于Linux内核的开源操作系统,主要用于触屏移动设备,如智能手机和平板电脑。
它由Google公司开发并发布,允许设备制造商和开发者自由地修改和分发。
2. 问题:请解释Android的架构。
答案: Android架构从下到上分为四个层次:- 应用层:包含用户界面和应用程序。
- 应用框架层:提供应用程序开发接口(API)。
- 运行时环境层:包括Android核心库和Android运行时环境。
- Linux内核层:提供底层的硬件抽象层、内存管理、进程管理等功能。
3. 问题: Android应用是如何打包的?答案: Android应用通常使用APK(Android Package)格式进行打包。
APK文件是一个压缩文件,包含应用的代码、资源、资产、库和AndroidManifest.xml文件。
4. 问题:什么是Activity?答案: Activity是Android应用程序中的基本构建块,用于定义用户界面和用户交互。
每个Activity都是一个独立的屏幕,用户可以与之交互。
5. 问题:请解释Intent的概念。
答案: Intent是Android中用于请求操作的抽象描述符。
它可以用于启动Activity、启动服务或广播信息。
Intent可以显式地指定目标组件,也可以隐式地通过Intent Filter来匹配。
6. 问题:如何在Android中处理网络请求?答案:在Android中处理网络请求通常使用HTTP客户端库,如OkHttp或Retrofit。
这些库提供了简化的API来发送HTTP请求和接收响应。
7. 问题:解释Android中的Context对象。
答案: Context是Android中一个非常关键的类,它允许访问应用程序环境的全局信息。
Context可以用于启动Activity、获取资源、启动服务等。
Android面试题整理
![Android面试题整理](https://img.taocdn.com/s3/m/8195978c0740be1e640e9a26.png)
Android常用面试简答题1、android 中得动画有哪几类,它们得特点与区别就是什么?参考答案:有两种,一种就是 Tween(补间)动画、还有一种就是 Frame(帧)动画。
Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度得变化;另一种 Frame 动画,传统得动画方法,通过顺序得播放排列好得图片来实现,类似电影。
2、请简述Handler得机制原理参考答案:andriod 提供了 Handler 与 Looper 来满足线程间得通信。
Handler 先进先出原则。
Looper类用来管理特定线程内对象之间得消息交换(Message Exchange)。
1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里得 Message Queue(消息队列)。
2)Handler: 您可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 Message Queue 里;或者接收 Looper从 Message Queue 取出)所送来得消息。
3) Message Queue(消息队列):用来存放线程放入得消息。
4)线程:UI thread 通常就就是 main thread,而 Android 启动程序时会替它建立一个Message Queue。
3、说说mvc模式得原理,它在android中得运用参考答案:MVC 就是 Model,View,Controller 得缩写,从上图可以瞧出 MVC 包含三个部分:模型( Model )对象:就是应用程序得主体部分,所有得业务逻辑都应该写在该层。
视图( View )对象:就是应用程序中负责生成用户界面得部分。
也就是在整个MVC 架构中用户唯一可以瞧到得一层,接收用户得输入,显示处理结果。
控制器( Control )对象:就是根据用户得输入,控制用户界面数据显示及更新Model 对象状态得部分,控制器更重要得一种导航功能,想用用户触发得相关事件,交给 Model处理。
Android面试题汇总
![Android面试题汇总](https://img.taocdn.com/s3/m/5fa91bbee45c3b3566ec8bbe.png)
Android面试题汇总1、什么是Activity?2、请描述一下Activity 生命周期3、横竖屏切换时候Activity 的生命周期。
4、如何将一个Activity 设置成窗口的样式。
5、你后台的Activity 被系统回收怎么办?6、如何退出Activity?如何安全退出已调用多个Activity 的Application ?7、同一个程序,但不同的Activity 是否可以放在不同的Task 任务栈中?8、Activity 怎么和service 绑定,怎么在activity 中启动自己对应的service?9、什么是Service 以及描述下它的生命周期。
10、Service 有哪些启动方法,有什么区别,怎样停用Service?11、什么是IntentService?有何优点?12、什么时候使用Service?13、请描述一下Intent 和Intent Filter。
14、Intent 传递数据时,可以传递哪些类型数据?15、说说Activity,Intent,Service 是什么关系。
16、请描述一下Broadcast Receiver。
17、在manifest 和代码中如何注册和使用broadcast receiver18、请介绍下ContentProvider 是如何实现数据共享的。
19、为什么要用ContentProvider?它和sql 的实现上有什么差别?20、请介绍下Android 中常用的五种布局。
21、请介绍下Android 的数据存储方式。
22、谈谈UI 中,Padding 和Margin 有什么区别?23、widget 相对位置的完成在antivity 的哪个生命周期阶段实现。
24、请解释下在单线程模型中Message、Handler、Message Queue、Looper 之间的关系。
25、AIDL 的全称是什么?如何工作?能处理哪些类型的数据?26、对android 虚拟机的理解,包括内存管理机制垃圾回收机制。
70道Android面试题
![70道Android面试题](https://img.taocdn.com/s3/m/f70295801eb91a37f0115c29.png)
70道Android面试题70道Android面试题(大全)1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
2.XML包括哪些解释技术,区别是什么?DOM和SAXDOM将文档解析成一颗文档树,可在节点上进行遍历、增加、修改和删除。
一次性读入内存,对内存消耗大。
SAX至上而下解析文档,以事件进行驱动。
不会一次性读入内存,对内存消耗小,不能任意读取节点,并且不能对节点进行增加、修改和删除。
3.switch语句能否作用在byte上,能否作用在long上,能否作用在String上?switch能作用在byte、char、short和int上,JDK1.7后可以作用在String上。
4."=="和equals方法究竟有什么区别?==和equals都可以比较地址。
==是运算符,equals是方法,方法可以通过重写改变其行为,如String的equals就是比较字符串内容。
5.构造方法能否被重写和重载?构造方法不能被重写但是能被重载。
6.面向对象的特征有哪些?封装、继承、多态和抽象。
7.抽象类和接口的区别?1).抽象类是abstract class修饰,接口是interface修饰。
2).抽象类可以有任意类型的属性,接口只能有静态常量修饰的属性。
3).抽象类可以有普通方法和抽象法方法,接口的方法都是抽象方法。
4).抽象类和接口都不能实例化,但是抽象类有构造方法,接口没有构造方法。
5).抽象类只能单根继承,接口可以多重实现。
8.内部类可以引用它的包含类的成员吗?有没有什么限制?可以引用。
如果需要指定当前类时要用外部类.this来引用。
android_面试题
![android_面试题](https://img.taocdn.com/s3/m/243625037cd184254b35352b.png)
1、android线程与线程之间(一般偶的是主线程和子线程之间),进程与进程之间,应用程序之间的是怎样通信的?线程之间利用handler实现,.通过绑定在主线程上的handler对子线程的通知;进程之间用到AIDL实现;应用程序之间用BroadcastReceiver.2、IntentService有何优点?Acitivity的进程,当处理Intent的时候,会产生一个对应的Service;Android的进程处理器现在会尽可能的不kill掉你;非常容易使用3、如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?重写onSaveInstanceState()方法,在此方法中保存需要保存的数据,该方法将会在activity被回收之前调用。
通过重写onRestoreInstanceState()方法可以从中提取保存好的数据4、如何将一个Activity设置成窗口的样式。
<activity>中配置:android :theme="@android:style/Theme.Dialog"另外android:theme="@android:style/Theme.Translucent" 是设置透明5、如何退出Activity?如何安全退出已调用多个Activity的Application?对于单一Activity的应用来说,退出很简单,直接finish()即可。
当然,也可以用killProcess()和System.exit()这样的方法。
对于多个activity,1、记录打开的Activity:每打开一个Activity,就记录下来。
在需要退出时,关闭每一个Activity即可。
2、发送特定广播:在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
3、递归退出:在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
android开发面试题目(3篇)
![android开发面试题目(3篇)](https://img.taocdn.com/s3/m/48a0b0353d1ec5da50e2524de518964bce84d25f.png)
第1篇第一部分:Android基础1. Android开发环境搭建- 请简要描述Android开发环境搭建的步骤,包括安装Android Studio、配置SDK、模拟器等。
2. Android系统架构- 请简述Android系统的架构,包括四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的作用和相互关系。
3. Activity生命周期- 请描述Activity的生命周期方法,包括onCreate、onStart、onResume、onPause、onStop、onDestroy等,并说明它们在何时被调用。
4. Intent- 请解释Intent的概念和作用,并说明如何创建和使用Intent进行组件间的通信。
5. Service- 请描述Service的生命周期方法,并说明如何创建一个前台Service和后台Service。
6. BroadcastReceiver- 请解释BroadcastReceiver的概念,并说明如何注册、发送和接收广播。
7. ContentProvider- 请解释ContentProvider的概念,并说明如何实现数据的共享。
8. AndroidManifest.xml- 请解释AndroidManifest.xml文件的作用,并列举其中需要配置的重要元素。
9. Android布局- 请描述几种常见的布局方式,如线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)等。
10. Android资源- 请解释Android资源的概念,并说明如何管理字符串资源、图片资源等。
第二部分:Java基础1. Java基本语法- 请简述Java的基本语法,包括变量、数据类型、运算符等。
2. 面向对象编程- 请解释面向对象编程的概念,并说明如何实现类的封装、继承和多态。
Android面试题集合(含答案)
![Android面试题集合(含答案)](https://img.taocdn.com/s3/m/28557f6d6c85ec3a87c2c5c0.png)
.云时代Android面试题集[键入文档副标题]目录第一章 Android最全面试题 71道题 (4)一、选择题 (4)二.填空和问答 (9)25. android中常用的五个布局是FrameLayout(单帧布局)、RelativeLyout(相对布局)、LinerLayout(线性布局)、TableLayout(表格布局)、AbsoluteLayout(绝对布局) (9)26. android 的四大组件是__Activity Service BrodcastReceiverContentProvier。
(9)27. java.io包中的__ObjectInputStream_和_ObjectOutputStream_类主要用于对对象(Object)的读写。
(9)28. android 中service的启动方法有:__startService____bindService_ (9)29. activity一般会重载7个方法用来维护其生命周期,分别是:onCreateonStart onResume onPause onStop onDestroy onRestart (9)30. android的数据存储的方式有:SharedPreferences数据存储、文件存储、SQLite数据库存储数据、Contentprovider存储数据、网络存储数据 (10)31. 当启动一个 Activity 并且新的 Activity 执行完后需要返回到启动它的Activity 数据,启动新Activity的方法是_startActivityForResult(intent,RequestCode)_,用来处理返回数据的Activity回调函数是void onActivityResult(int requestCode,intresultCode,intent data)_。
(10)33.下面程序运行的结果是:______________。
android面试题及答案
![android面试题及答案](https://img.taocdn.com/s3/m/0b1ffc97ac51f01dc281e53a580216fc700a5396.png)
android面试题及答案一、Activity 生命周期相关1. 请简述Activity的生命周期,并解释每个状态的含义。
- Activity生命周期主要包括 onCreate(), onStart(), onResume(), onPause(), onStop(), 和 onDestroy() 方法。
onCreate() 在Activity第一次创建时调用,用于初始化界面和数据。
onStart() 当Activity对用户可见时调用,表示Activity已经部分准备好与用户交互。
onResume() 当Activity准备与用户交互时调用,此时Activity处于前台。
onPause() 当Activity失去焦点,但未完全退出时调用,用于保存数据和清理资源。
onStop() 当Activity完全不再显示在屏幕上时调用,释放资源。
onDestroy() 当Activity被系统销毁时调用,用于做最后的清理工作。
2. Activity A跳转到Activity B,再按返回键,生命周期如何调用? - 当从Activity A跳转到Activity B时,Activity A的onPause()会被调用,然后是onStop(),而Activity B会依次调用onCreate(),onStart(),onResume()。
按返回键从Activity B返回到Activity A时,Activity B会依次调用onPause()和onStop(),Activity A则会依次调用onRestart(), onStart()和onResume()。
二、Intent 相关1. 请解释Intent的基本作用及其使用场景。
- Intent是Android中用于组件间通信的一种机制,它可以用于启动Activity,Service,发送广播等。
常见的使用场景包括从一个Activity启动另一个Activity,或者向Service发送数据。
android面试题目及其答案大全
![android面试题目及其答案大全](https://img.taocdn.com/s3/m/79aa7b49fe4733687e21aab9.png)
面试题目及其答案1,++i和i++ 区别2,makefile文件代码,写代码3,隐藏与重写的区别4,linux 基本命令使用如:如何查询帮助文档(man),如何查处文件(fiind),常用命令5,进程间通信有几种,效率如何6、什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?7,tcp/ip 有几层8、一条最长的短信息约占多少byte?9,p2p 和SMTP分别在哪层10、android中的动画有哪几类,它们的特点和区别是什么?11,多态概念(父类引用子类参数)12、handler机制的原理13,java 写1+N的和14,数据结构与算法如排序,二叉树15,MVC概念(为什么有DAO层,什么作用)16,GC回收机制17、说说mvc模式的原理,它在android中的运用18,android项目自述19,java 的进程与线程维护20、Activity的生命周期21,N*N 打印出来的样子是(例如N=4) 1 2 3 412 13 14 511 16 15 610 9 8 722,linux 末行,输入,命令三个模式23、Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念24,android 四层架构分别的作用(android系统框图)25、sim卡的EF 文件有何作用26,android四大组件,生命周期,onpause()与onstop()的区别27,UMI建模概念28,C语言打印N*N数组,规律如下:2维 1 23 43维 1 2 38 9 47 6 54维 1 2 3 412 13 14 511 16 15 610 9 8 71、Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念DVM指dalivk的虚拟机。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。
Android面试题集合(含答案)
![Android面试题集合(含答案)](https://img.taocdn.com/s3/m/c6533848770bf78a6429542f.png)
目录第一章An droid 最全面试题71道题 (4)一、选择题4二. 填空和问答 (11)25. an droid中常用的五个布局是FrameLayout(单帧布局)、RelativeLyout(相对布局)、云时代An droid面试题集[键入文档副标题]LinerLayout(线性布局)、TableLayout(表格布局)、AbsoluteLayout(绝对布局) .. 1126. an droid 的四大组件是Activity Service BrodcastReceiver ContentProvier。
(12)27. java.io 包中的ObiectlnputStream 禾口ObiectOutputStream 类主要用于对对象(Object)的读写。
(12)28. an droid 中service 的启动方法有:_startService bi ndService (12)29. activity 一般会重载7个方法用来维护其生命周期,分别是:on Create on StartonResume onPause onStop onDestroy onRestart (12)30. an droid的数据存储的方式有:SharedPrefere nces数据存储、文件存储、SQLite数据库存储数据、Contentprovider存储数据、网络存储数据 (12)31. 当启动一个Activity 并且新的Activity 执行完后需要返回到启动它的Activity数据,启动新Activity 的方法是startActivityForResult(intent,RequestCode),用来处理返回数据的Activity 回调函数是void onActivityResult(int requestCode,intresultCode.intent data)_。
(13)33. 下面程序运行的结果是:—_。
Android面试题
![Android面试题](https://img.taocdn.com/s3/m/85eeddd8c1c708a1284a4492.png)
1. 什么是Activity?四大组件之一,一般的,一个用户交互界面对应一个activitysetContentView() ,// 要显示的布局, activity 是Context的子类,同时实现了window.callback和keyevent.callback, 可以处理与窗体用户交互的事件.button.setOnclickLinstener{}我开发常用的的有ListActivity , PreferenceActivity ,TabAcitivty等…如果界面有共同的特点或者功能的时候,还会自己定义一个BaseActivity.进度对话框的显示与销毁 doubanservice2. 请描述一下Activity 生命周期。
生命周期描述的是一个类从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法..在这个过程中会针对不同的生命阶段会调用不同的方法Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:oncreate ondestroy onstop onstart onresume onpause其实这些方法都是两两对应的,onCreate创建与onDestroy销毁;onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause;对话框的弹出, Activity.this对话框是activity的一部分.这6个方法是相对应的,那么就只剩下一个onRestart方法了,这个方法在什么时候调用呢?答案就是:在Activity被onStop后,但是没有被onDestroy,在再次启动此Activity时就调用onRestart(而不再调用onCreate)方法;如果被onDestroy了,则是调用onCreate方法。
最后讲自己项目中的经验,比如说豆瓣客户端每次进入某个界面的时候都要看到最新的数据,这个刷新列表的操作就放在onStart()的方法里面.fillData() 这样保证每次用户看到的数据都是最新的.多媒体播放, 播放来电话. onStop() 视频, 视频声音设置为0 , 记录视频播放的位置mediaplayer.pause();onStart() 根据保存的状态恢复现场. mediaplayer.start();在读文档的时候还发现 activity还有两个方法 onPostResume() 和 OnPostCreate()这两个生命周期的方法,不过开发的时候没有用到过.3. 两个Activity之间跳转时必然会执行的是哪几个方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.什么是Activity?四大组件之一,一般的,一个用户交互界面对应一个activitysetContentView(),//要显示的布局,activity是Context的子类,同时实现了window.callback和keyevent.callback,可以处理与窗体用户交互的事件.button.setOnclickLinstener{}我开发常用的的有ListActivity,PreferenceActivity,TabAcitivty等…如果界面有共同的特点或者功能的时候,还会自己定义一个BaseActivity.进度对话框的显示与销毁doubanservice2.请描述一下Activity生命周期。
生命周期描述的是一个类从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法..在这个过程中会针对不同的生命阶段会调用不同的方法Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:oncreate ondestroy onstop onstart onresume onpause其实这些方法都是两两对应的,onCreate创建与onDestroy销毁;onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause;对话框的弹出,Activity.this对话框是activity的一部分.这6个方法是相对应的,那么就只剩下一个onRestart方法了,这个方法在什么时候调用呢?答案就是:在Activity被onStop后,但是没有被onDestroy,在再次启动此Activity时就调用onRestart(而不再调用onCreate)方法;如果被onDestroy了,则是调用onCreate方法。
最后讲自己项目中的经验,比如说豆瓣客户端每次进入某个界面的时候都要看到最新的数据,这个刷新列表的操作就放在onStart()的方法里面.fillData()这样保证每次用户看到的数据都是最新的.多媒体播放,播放来电话.onStop()视频,视频声音设置为0,记录视频播放的位置mediaplayer.pause();onStart()根据保存的状态恢复现场.mediaplayer.start();在读文档的时候还发现activity还有两个方法onPostResume()和OnPostCreate()这两个生命周期的方法,不过开发的时候没有用到过.3.两个Activity之间跳转时必然会执行的是哪几个方法。
一般情况比如说有两个activity,分别叫A,B,当在A里面激活B组件的时候,A会调用onPause()方法,然后B调用onCreate(),onStart(),OnResume(),这个时候B覆盖了窗体,A会调用onStop()方法.如果B呢是个透明的,或者是对话框的样式,就不会调用onStop()方法4.横竖屏切换时候Activity的生命周期。
这个生命周期跟清单文件里的配置有关系1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期默认首先销毁当前activity,然后重新加载Onpause onstop ondestory oncreate onstart onresume2、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法游戏开发中,屏幕的朝向都是写死的.5.如何将一个Activity设置成窗口的样式。
可以自定义一个activity的样式,详细见手机卫士的程序详细信息android:theme="@style/FloatActivity"E:\day9\mobilesafe\res\values\style6.你后台的Activity被系统回收怎么办?如果后台的Activity由于某原因被系统回收可了,如何在被系统回收之前保存当前状态?除了在栈顶的activity,其他的activity都有可能在内存不足的时候被系统回收,一个activity越处于栈底,被回收的可能性越大.protected void onSaveInstanceState(Bundle outState){super.onSaveInstanceState(outState);outState.putLong("id",1234567890);}public void onCreate(Bundle savedInstanceState){//判断savedInstanceState是不是空.//如果不为空就取出来super.onCreate(savedInstanceState);}7.如何退出Activity?如何安全退出已调用多个Activity的Application?退出activity直接调用finish()方法.//用户点击back键就是退出一个activity 退出activity会执行onDestroy()方法.1、抛异常强制退出:该方法通过抛异常,使程序Force Close。
验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force Close的窗口。
//安全结束进程android.os.Process.killProcess(android.os.Process.myPid());2、记录打开的Activity:每打开一个Activity,就记录下来。
在需要退出时,关闭每一个Activity即可。
List<Activity>lists;在application全集的环境里面lists=new ArrayList<Activity>();每一个activity在执行oncreate()方法的时候lists.add(this);Ondestory()lists.remove(this);lists.add(activity);for(Activity activity:lists){activity.finish();}3、发送特定广播:在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
//给某个activity注册接受接受广播的意图registerReceiver(receiver,filter)//如果过接受到的是关闭activity的广播就调用finish()方法把当前的activity finish()掉4、递归退出在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
404退出程序OnActivityResult();讲一讲你对activity的理解把上面的几点用自己的心得写出来8.service是否在main thread中执行,service里面是否能执行耗时的操作?默认情况,如果没有显示的指定service所运行的进程,Service和activity是运行在当前app所在进程的main thread(UI主线程)里面service里面不能执行耗时的操作(网络请求,拷贝数据库,大文件)在子线程中执行new Thread(){}.start();特殊情况,可以在清单文件配置service执行所在的进程,让service在另外的进程中执行<service android:process="cn.itcast.xxx"></service>9.两个Activity之间怎么传递数据?基本数据类型可以通过.Intent传递数据extras.putDouble(key,value)intent.putExtra(name,value)//通过intent putExtra方法基本数据类型都传递Bundle bundle=new Bundle();bundle.putShort(key,value);intent.putExtras(bundle);intent.putExtras(bundle)获取到激活他的getIntent();Intent intent=getIntent();Bundle bundle=intent.getExtras();Bundle类似map的集合intent.getStringExtra("key","value");intent.getBooleanExtra("key","value")Application全局里面存放对象,自己去实现自己的application的这个类,基础系统的application,每个activity都可以取到让对象实现implements Serializable接口把对象存放到文件上.让类实现Serializable接口,然后可以通过ObjectOutputStream//对象输出流File file=new File("c:\\1.obj");FileOutputStream fos=new FileOutputStream(file);ObjectOutputStream oos=new ObjectOutputStream(fos);Student stu=new Student();stu.setId("10001");stu.setName("zs");oos.writeObject(stu);FileInputStream fis=new FileInputStream(file);ObjectInputStream ois=new ObjectInputStream(fis);Student stu1=(Student)ois.readObject();System.out.println(stu1.getName());Parcelable和SerializableParcelable把对象序列化到android操作系统的一块公用的内存空间文件/网络//传递数据的引用intent.setData(Uri)Uri.fromFile();//大图片的传递contentResolver.getInputStream(uri);10.怎么让在启动一个Activity是就启动一个service?在activity的onCreate()方法里面startService();11.同一个程序,但不同的Activity是否可以放在不同的Task任务栈中?比方说在激活一个新的activity时候,给intent设置flagIntent的flag添加FLAG_ACTIVITY_NEW_TASK singleinstance单独的任务栈这个被激活的activity就会在新的task栈里面…Intent intent=new Intent(A.this,B.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);12.Activity怎么和service绑定,怎么在activity中启动自己对应的service?startService()一旦被创建调用着无关没法使用service里面的方法bindService()把service与调用者绑定,如果调用者被销毁,service会销毁bindService()我们可以使用service里面的方法bindService().让activity能够访问到service里面的方法构建一个intent对象,Intent service=new Intent(this,MyService.class);通过bindService的方法去启动一个服务,bindService(intent,new MyConn(),BIND_AUTO_CREATE);ServiceConnection对象(重写onServiceConnected和OnServiceDisconnected方法)和BIND_AUTO_CREATE.private class myconn implements ServiceConnection{public void onServiceConnected(ComponentName name,IBinder service){ //TODO Auto-generated method stub//可以通过IBinder的对象去使用service里面的方法}public void onServiceDisconnected(ComponentName name){//TODO Auto-generated method stub}}13.14.什么是Service以及描述下它的生命周期。