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. 【转载】Latex定制章节编号格式和计数器

    原文: http://www.chengkaiblog.com/software-application/latex/customize-section-format-counter.html _1. ...

  2. [转] 浅谈Trie树(字典树)

    原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html Trie树(字典树) 一.引入 字典是干啥的?查找字的. 字典树自然也是起查找 ...

  3. UniGUI 如何进行 UniDBGrid 的单元 Cell 的计算 ?

    来源:http://forums.unigui.com/index.php?/topic/10508-update-dataset-events-in-unidbgrid/?hl=unidbgrid ...

  4. Redis(转)

    传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量 ...

  5. Log4PHP日志库使用

    库下载地址: http://logging.apache.org/log4php/download.html 当前测试使用的版本为2.3.0 1.解压缩下载的压缩文件apache-log4php-2. ...

  6. 【转】Linux中profile、bashrc、bash_profile之间的区别和联系

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登陆时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置. 英文描述为: # /etc/pr ...

  7. Win7系统分区提示会把选定的基本磁盘转化为动态磁盘

    其实是因为目前分区数量已经达到四个了,需要用分区工具先删除一个分区,可以解决问题了

  8. Mysql按条件计数的几种方法

    最近在给某网站的后台添加一系列的统计功能,遇到很多需要按条件计数的情况.尝试了几种方法,下面简要记录,供大家参考. 问题描述 为使讨论简单易懂,我将问题稍作简化,去掉诸多的背景. 从前有一个皇帝,他有 ...

  9. mybatis:自动分页插件

    项目地址:https://github.com/pagehelper/pagehelper-spring-boot 简单使用: 1.在pom文件中添加 <dependency> <g ...

  10. IList与List的区别

    List是一个类(Class),IList是一个接口(Interface),不能被实例化,只能用 IList <T> myIList =new List <T>(); List ...