1. Devik进程,Linux进程,线程的区别

说一说对 SP 频繁操作有什么后果? SP 能存储多少数据?

      SP 的底层其实是由xml文件来实现的,操作 SP 的过程其实就是xml的序列化和反序列化,序列化是将数据写入 xml 文件的过程中
xml 文件是存储在磁盘中的,考虑到 I/O 的读取,最好不要对 SP 进行频繁的操作.
因为dvm的堆内存是有限的,所以 xml 文件最好不要太大,具体多大都没有要求,但是我们都知道DVM堆内存也就 16M ,数据大小肯定不能超过这个数字.
其实 SP 主要是存储用户配置和偏好的,不必要去存储大量数据.

2. 内存溢出和内存泄漏有什么区别?何时会产生内存泄漏?内存优化有哪些方法?

②内存泄漏

Android 的虚拟机是基于寄存器的Dalvik,他的最大堆大小是16M,有的机器是24M,所能使用的内存空间是有限的,内存占用超过就会出现 OOM 异常

产生原因

  • 对象内存过大,比如bitmap、xml文件,造成内存超出限制
  • 使用过后的资源不能及时释放,造成内存泄漏
  • static 关键字的使用,因为使用 static 修饰的变量,他的生命周期很长

    -----------避免使用static 成员变量引用资源耗费过多的实例

    ------------尽量使用applicayion 的 Context

    -----------使用软引用代替强引用
  • 线程导致内存泄漏

    主要是因为线程生命周期的不可控,例如,在开启线程时进行横竖屏的切换操作,一般情况下的横竖屏切换会重新创建Activity,而老的Activity是会被销毁的,但是实际上并不是这样,因为在线程中保存了 Activity 的引用,当Run函数没有执行完的时候,线程是不会被销毁的,因此就会出现了内存泄漏的问题。如果使用 AsyncTask 也不可以,因为他的内部实现时使用线程池,threadPoolExcutor,这个类对thread对象的生命周期是不可控的。

3. Activity是如何生成一个view的?

Activity 是一个工人,它来控制 Window ;Window 是一面显示屏,用来显示信息;

View 都是层层重叠在一起(通过 infalte() 和 addView())放到 Window 显示屏上。

LayoutInfalter 就是用来生成View的 一个工具,XML 布局文件就是用来生成 View 的原料

代码具体的执行流程:

setContentView(R.layout.main)其实就是下面内容。

getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main, null))

运行程序后:

Activity 会调用 PhoneWindow 的 setContentView() 来生成一个 Window,而此时的 setContentView 就是那个最底层的 View。

然后通过 LayoutInflater.infalte() 方法加载布局生成View对象并通过 addView()方法添加到 Window 上,(一层一层的叠加到 Window 上)

Activity 其实不是显示视图,View 才是真正的显示视图。

一个 Activity 构造的时候只能初始化一个 Window(PhoneWindow)

另外这个 PhoneWindow 有一个”ViewRoot”,这个”ViewRoot”是一个 View 或 ViewGroup,是最初始的根视图

然后通过 addView 方法将 View 一个个层叠到 ViewRoot 上, 这些层叠的 View 最终放在 Window 这个载体上面

(3题答案是参考大神:http://blog.csdn.net/sada09/article/details/8644901)

4. Android 程序运行时权限与文件系统权限的区别?

6. HTTPS 和 HTTP 区别

① https协议需要到ca申请证书,一般免费证书很少,需要交费。

② http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议

③ http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。

④ http的连接很简单,是无状态的

⑤ HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全

7. 简述对 AIDL 的理解

① AIDL 是 Android Interface Definition Language 的英文缩写,Android 接口定义语言

② AIDL 可以发布及调用远程服务,实现跨进程通信

③ 将服务的 AIDL 放到 src 目录下会在 gen 目录下生成相应的接口类

8. ForceClos e出现原因,如何避免

9. 如何解决 android 方法数量不超过 65535

从sdk\extras\Android\support\multidex\library\libs 目录将Android-support-multidex.jar导入工程中

如果你的工程中已经含有Application类,那么让它继承android.support.multidex.MultiDexApplication类,

如果你的Application已经继承了其他类并且不想做改动,那么还有另外一种使用方式,覆写attachBaseContext()方法

10. AsyncTask 使用在哪些场景?它的缺陷是什么?如何解决?

11. View 与 ViewGroup的区别?

android view和 ViewGroup,在架构上看似乎ViewGroup之上,

View需要继承ViewGroup,但实际上不是这样的。

View是基类,ViewGroup是他的子类,这就证明了View代表了用户界面的组件的块可绘制的中间区域块,每个View在屏幕上占据了一个长方形区域,

在这个区域内,这个View对象负责图形绘制和事件的处理,View是小控件widget和ViewGroup的父类,ViewGroup又是Layout 的基类

12 post请求与get请求的区别

1.使用Get请求时,参数在URL中显示,而使用Post方式,则不会显示出来

2.使用Get请求发送数据量小,Post请求发送数据量大

1.get请求需注意缓存问题,post请求不需担心这个问题

2.post请求必须设置Content-Type值为application/x-form-www-urlencoded

3.发送请求时,因为get请求的参数都在url里,所以send函数发送的参数为null,而post请求在使用send方法时,却需赋予其参数

在客户端使用get请求时,服务器端使用Request.QueryString来获取参数,而客户端使用post请求时,服务器端使用Request.Form来获取参数.

关于服务器端获取数据,我们还可以使用一个通用的获取参数的方式即Request["username"],但是此方法存在一个问题,我们随后来讲.

下面,我们使用HttpWatch来看下,当使用get和post方式发送请求时,客户端究竟发送了什么,收到了什么.

对于get请求和post请求中的时间差,请不要在意,因为是在不同时间按下的get按钮和post按钮.

Android 第一波的更多相关文章

  1. 如何开发Android Wear应用程序

    Android Wear是连接安卓手机和可穿戴产品的一个平台.自从今年上半年发布以来,Android Wear获得了大量关注,既有来自消费者的关注,也有来自开发商的关注,后者希望自己的应用程序已经准备 ...

  2. Android 底部TabActivity(0)——开篇(界面分析|系列文章文件夹)

    当下主流的软件没有一个统一明白的风格,App框架什么样的都有,但个人钟情于页面底部Tab分签架构,移动设备的屏幕尽管越来越大,可是显示的内容还是有限,为了能展示很多其它的内容,方便简洁的操作习惯中Ta ...

  3. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  4. 配置android sdk 环境

    1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/

  5. Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记

    以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...

  6. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  7. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  8. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  9. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

随机推荐

  1. POJ 3253 Fence Repair (贪心)

    题意:将一块木板切成N块,长度分别为:a1,a2,……an,每次切割木板的开销为当前木板的长度.求出按照要求将木板切割完毕后的最小开销. 思路:比较奇特的贪心 每次切割都会将当前木板一分为二,可以按切 ...

  2. 20165337实验三——敏捷开发与XP实践

    实验要求 实验三-1 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 参考 http://www.c ...

  3. 修改Spring Social默认提交地址

    ⒈ package cn.coreqi.social.config; import org.springframework.social.security.SocialAuthenticationFi ...

  4. Thymeleaf相关补充

    ⒈理解Thymeleaf Java模板引擎.能够处理HTML.XML.JavaScript.CSS甚至纯文本.类似JSP.Freemarker 自然模板.原型即页面 语法优雅易懂,OGNL.Sprin ...

  5. 【ARTS】01_13_左耳听风-20190204~20190210

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  6. FAT文件系统规范v1.03学习笔记---2.FAT区之FAT数据结构(Fat Data Structure)

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  7. linux的/etc/profile环境变量设置不生效【原创】

    设置/etc/profile的java环境变量不生效 修改环境变量 /etc/profile JAVA_HOME=/opt/software/jdk1..0_25 PATH=/usr/local/sb ...

  8. nginx指定文件路径有两种方式root和alias

    背景 一直没明白这个配置啥意思,反正凑合用吧,不过老凑合总不是个事,没搞明白更容易忘,别人问还答不上来.反正也很简单,就搞明白点记下来. 知识点 root实例: location ^~ /t/ { r ...

  9. 023_nginx跨域问题

    什么是跨域? 使用js获取数据时,涉及到的两个url只要协议.域名.端口有任何一个不同,都被当作是不同的域,相互访问就会有跨域问题.例如客户端的域名是www.redis.com.cn,而请求的域名是w ...

  10. jquery简单使用入门

    <!DOCTYPE html> <html> <head> <title>jquery</title> <meta charset=& ...