1:Android中五种数据存储方式分别是什么?他们的特点?
(1)SharedPreference,存放较少的五种类型的数据,只能在同一个包内使用,生成XML的格式存放在设备中
(2) SQLite数据库,存放各种数据,是一个轻量级的嵌入式数据库
(3) File文件,通过读取写入方式生成文件存放数据
(4) ContentProvider,主要用于让其他应用程序使用保存的数据
(5) 通过网络获取数据和写入数据到网络存储空间 答:Android提供了五种存取数据的方式
2:说说 android 中 mvc 的具体体现mvc是model,view,controller的缩写,mvc包含三个部分:
模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。
视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。
控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,响应用户出发的相关事件,交给m层处理。
android鼓励弱耦合和组件的重用,在android中mvc的具体体现如下:
(1)视图(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入。
(2)控制层(controller):android的控制层的重任通常落在了众多的acitvity的肩上,这句话也就暗含了不要在acitivity中写过多的代码,要通过activity交割model业务逻辑层处理,这样做的另外一个原因是android中的acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。
(3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。
3: 简述SharedPreferences存储方式以及SharedPreferences与SQLite数据库的区别
SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能读取数据而不支持写入数据,存储修改是通过Editor对象实现。SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。
4:描述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。
5:显式intent和隐式intent的区别是什么(android)答:Intent定义:Intent是一种在不同组件之间传递的请求消息,是应用程序发出的请求和意图。作为一个完整的消息传递机制,Intent不仅需要发送端,还需要接收端。
显式Intent定义:对于明确指出了目标组件名称的Intent,我们称之为显式Intent。
隐式Intent定义:对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。
说明:Android系统使用IntentFilter 来寻找与隐式Intent相关的对象。
6:如何优化ListView
1、如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用。在这个方法中尽可能少创建view。
2、给contentView设置tag(setTag()),传入一个viewHolder对象,用于缓存要显示的数据,可以达到图像数据异步加载的效果。
3、如果listview需要显示的item很多,就要考虑分页加载。比如一共要显示100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的时候再去加载接下来的20条。
7:简述通过contentResolver获取ContentProvider内容的基本步骤
第一:得到ContentResolver类对象:ContentResolver cr = getContentResolver();
第二:定义要查询的字段String数组。
第三:使用cr.query();返回一个Cursor对象。
第四:使用while循环得到Cursor里面的内容。
8:描述4 种 activity 的启动模式
(1)standard :系统的默认模式,一次跳转即会生成一个新的实例。假设有一个activity命名为MainActivity,执行语句:
startActivity(new Intent(MainActivity.this,
MainActivity.class))后,MainActivity将跳转到另外一个MainActivity,也就是现在的Task栈里面有MainActivity的两个实例。按返回键后你会发现仍然是在MainActivity(第一个)里面。
(2)singleTop:singleTop 跟standard
模式比较类似。如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。例:当MainActivity为仅
singleTop 模式时,执行跳转后栈里面依旧只有一个实例,如果现在按返回键程序将直接退出。
(3)singleTask:
singleTask模式和后面的singleInstance模式都是只创建一个实例的。在这种模式下,无论跳转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例(当然前提是栈里面已经有这个实例)。这种模式相当有用,在以后的多activity开发中,经常会因为跳转的关系导致同个页面生成多个实例,这个在用户体验上始终有点不好,而如果你将对应的activity声明为尽
singleTask 模式,这种问题将不复存在。
(4)singleInstance: 设置为 singleInstance 模式的 activity
将独占一个task(感觉task可以理解为进程),独占一个task的activity与其说是activity,倒不如说是一个应用,这个应用与其他activity是独立的,它有自己的上下文activity。
9:Android中如何访问自定义ContentProvider?
通过ContentProvider的Uri访问开放的数据。
(1)ContenResolver对象通过Context提供的方法getContenResolver()来获得。
(2)ContenResolver提供了以下方法来操作:insert delete update
query这些方法分别会调用ContenProvider中与之对应的方法并得到返回的结果。
10:android中的动画有哪几类,它们的特点和区别是什么?
答:Android中动画可以分为两大类:帧动画、补间动画
(1)补间动画:你定义一个开始和结束,中间的部分由程序运算得到。主要有:旋转、平移、放缩和渐变;AlphaAnimation(渐变型动画)、scaleAnimation(缩放型动画)、t
TranslateAnimation(平移型动画)、 RotateAnimation(旋转型动画)、
(2)逐帧动画:Frame(把一连串的图片进行系列化连续播放,如同放电影的效果),它是通过播放一张一张图片来达到动画的效果;
6:如何优化ListView
1、如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用。在这个方法中尽可能少创建view。
2、给contentView设置tag(setTag()),传入一个viewHolder对象,用于缓存要显示的数据,可以达到图像数据异步加载的效果。
3、如果listview需要显示的item很多,就要考虑分页加载。比如一共要显示100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的时候再去加载接下来的20条。
7:简述通过contentResolver获取ContentProvider内容的基本步骤
第一:得到ContentResolver类对象:ContentResolver cr = getContentResolver();
第二:定义要查询的字段String数组。
第三:使用cr.query();返回一个Cursor对象。
第四:使用while循环得到Cursor里面的内容。
8:描述4 种 activity 的启动模式
(1)standard :系统的默认模式,一次跳转即会生成一个新的实例。假设有一个activity命名为MainActivity,执行语句:
startActivity(new Intent(MainActivity.this,
MainActivity.class))后,MainActivity将跳转到另外一个MainActivity,也就是现在的Task栈里面有MainActivity的两个实例。按返回键后你会发现仍然是在MainActivity(第一个)里面。
(2)singleTop:singleTop 跟standard
模式比较类似。如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。例:当MainActivity为r
singleTop 模式时,执行跳转后栈里面依旧只有一个实例,如果现在按返回键程序将直接退出。
(3)singleTask:
singleTask模式和后面的singleInstance模式都是只创建一个实例的。在这种模式下,无论跳转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例(当然前提是栈里面已经有这个实例)。这种模式相当有用,在以后的多activity开发中,经常会因为跳转的关系导致同个页面生成多个实例,这个在用户体验上始终有点不好,而如果你将对应的activity声明为l
singleTask 模式,这种问题将不复存在。
(4)singleInstance: 设置为 singleInstance 模式的 activity
将独占一个task(感觉task可以理解为进程),独占一个task的activity与其说是activity,倒不如说是一个应用,这个应用与其他activity是独立的,它有自己的上下文activity。
9:Android中如何访问自定义ContentProvider?
通过ContentProvider的Uri访问开放的数据。
(1)ContenResolver对象通过Context提供的方法getContenResolver()来获得。
(2)ContenResolver提供了以下方法来操作:insert delete update
query这些方法分别会调用ContenProvider中与之对应的方法并得到返回的结果。
10:android中的动画有哪几类,它们的特点和区别是什么?
答:Android中动画可以分为两大类:帧动画、补间动画
(1)补间动画:你定义一个开始和结束,中间的部分由程序运算得到。主要有:旋转、平移、放缩和渐变;AlphaAnimation(渐变型动画)、scaleAnimation(缩放型动画)、l
TranslateAnimation(平移型动画)、 RotateAnimation(旋转型动画)、
(2)逐帧动画:Frame(把一连串的图片进行系列化连续播放,如同放电影的效果),它是通过播放一张一张图片来达到动画的效果;
分享到:
相关推荐
Android开发工程师面试题是针对Android初级开发程序员的笔试和面试指南,涵盖了Java基础、Java Web、Oracle数据库以及Android四大技术领域的问题。本书旨在帮助求职者在面试前做足准备,提高通过率,最终找到满意的...
在当今竞争激烈的IT行业中,Android开发工程师的需求依然十分旺盛,因此,准备充分的面试对于求职者来说至关重要。本文将基于一位Android开发者的面试经历和个人感悟,总结出了一些宝贵的建议与心得,希望能帮助更多...
Android面试题则更多地面向移动应用开发领域的求职者,尤其是那些专注于Android平台的开发者。在面试中,应聘者可能会被问及Java或Kotlin编程语言知识、Android SDK的运用、UI设计原则、多线程编程、内存管理、数据...
总结起来,Android Tools4U源码是一个集实用性、教学性、研究性于一体的资源库,无论你是初入职场的开发者,还是经验丰富的工程师,或是学习Android的学生,都能从中受益。通过深入研究,你将能够提升自己的开发技能...
面试相关分享:包括常见的面试题目,大厂面试真题、面试经验套路分享。 算法相关学习笔记:比如怎么学习算法,leetcode 常见算法总结,跟大家一起学习算法。 时事点评:主要是关于互联网的,比如小米高管屌丝事件,...
以下是一些可能出现在“华为及其他外包公司软件测试面试题”中的关键知识点详解: 1. **测试基础理论**: - **测试用例设计**:包括等价类划分、边界值分析、因果图法、正交排列等,这些都是设计高效测试用例的...
以下是一些关于“软件测试面试题”的核心知识点,这些知识点不仅适用于面试准备,也对提升软件测试技能大有裨益。 1. **测试基础概念**: - **什么是软件测试**:软件测试是为了发现软件缺陷的过程,它验证和确认...
嵌入式软件工程师尹先生简历知识点总结 作为一名嵌入式软件...尹先生的简历展示了他作为一名嵌入式软件工程师的多方面技能和经验,涵盖了嵌入式软件开发、Android系统开发、多媒体开发、人工智能和机器学习等领域。
1. 机器学习工程师面试心得:知识得系统性学习 2. 文科生转行面经:我是如何从数据分析到算法并薪资翻倍 3. 应届海龟小硕跳槽转岗求职经历 4. 双非研究生学习历程及面试总结 5. AI offer面经薪资近乎翻倍,题库里的...
**JavaEE、Android程序员面试宝典**:该资源针对JAVA EE和Android程序员的面试准备,包含了大量的面试题及解答策略,旨在帮助求职者更好地准备面试,获得理想的工作机会。 #### 八、总结 综上所述,“【珍藏】JAVA ...
例如,阿里巴巴Java工程师面试宝典中包含的面试题汇总,为求职者提供了面试中可能遇到的技术问题和答案。这可以帮助求职者更好地准备面试,展示自己的技术能力。 6. 行业技术趋势和大咖演讲: 文档还囊括了各领域...