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. 最全免费CDN公共库——网站提速

    开源静态文件 CDN 我们的目标是提供这样一个仓库,让它尽可能全面收录优秀的开源库,并免费为之提供 CDN 加速服务,使之有更好的访问速度和稳定的环境.同时,我们也提供开源库源接入的入口,让所有人都可 ...

  2. javascript/ajax和php 进阶 之 项目实战

    1,使用异步思想做一个下拉列表,能够选择和展示数据库中对应的信息. 1,事件知识:所有的事件可参照:https://www.jb51.net/html5/459444.html 2,js中this补充 ...

  3. shell编程 之 流程控制(条件语句和循环语句)

    1 if ...else... 基本格式: if condition then commend else commend fi 当然也可以写到一行,用[ ]表明边界,用:表示分行.比如: if [ $ ...

  4. 【转载】 python-星号变量的特殊用法

    原文链接:https://www.qingsword.com/qing/python-12.html 引言 在Python中,星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法"在变量前 ...

  5. 第五节,损失函数:MSE和交叉熵

    损失函数用于描述模型预测值与真实值的差距大小,一般有两种比较常见的算法——均值平方差(MSE)和交叉熵. 1.均值平方差(MSE):指参数估计值与参数真实值之差平方的期望值. 在神经网络计算时,预测值 ...

  6. Netty实现简单UDP服务器

    本文参考<Netty权威指南> 文件列表: ├── ChineseProverbClientHandler.java ├── ChineseProverbClient.java ├── C ...

  7. ASP.NET Core中使用Autofac

    ⒈添加相关依赖 Install-Package Autofac ⒉扫描项目接口实现类 using Autofac; using System; using System.Collections.Gen ...

  8. python 中@ 的用法【转】

    这只是我的个人理解: 在Python的函数中偶尔会看到函数定义的上一行有@functionName的修饰,当解释器读到@的这样的修饰符之后,会先解析@后的内容,直接就把@下一行的函数或者类作为@后边的 ...

  9. python骚操作之...

    python中的Ellipsis对象.写作:- 中文解释:省略 该对象bool测试是为真 用途: 1.用来省略代码,作用类似于pass的一种替代方案. from collections.abc imp ...

  10. 构建高性能WEB站点之 吞吐率、吞吐量、TPS、性能测试

    内容参考: 构建高性能WEB站点.pdf 一.吞吐率 我们一般使用单位时间内服务器处理的请求数来描述其并发处理能力.称之为吞吐率(Throughput),单位是 “req/s”.吞吐率特指Web服务器 ...