Android面试
文章平均质量分 67
叮咚在深圳
这个作者很懒,什么都没留下…
展开
-
学习AIDL,这一篇文章就够了
1、概述AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言。是的,首先我们知道的第一点就是:AIDL是一种语言。既然是一种语言,那么相应的就很自然的衍生出了一些问题:为什么要设计出这么一门语言?它有哪些语法?我们应该如何使用它?再深入一点,我们可以思考,我们是如何通过它来达到我们的目的的?更深入一点转载 2016-12-19 21:27:13 · 434 阅读 · 0 评论 -
学习JNI--Android下使用JNI调用C
一、什么是JNI:JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。1、使用JNI的转载 2016-12-15 16:44:27 · 595 阅读 · 0 评论 -
JNI调用机制
JNI的简单介绍Java Native Interface (JNI)是java本地调用接口,所谓的native就是调用c/c++的程序。java调用C语言的情况一般有三种:调用驱动。由于操作系统提供的驱动一般都是C接口,Java语言并不具备操作这些驱动的能力。对于计算量比较大,处理数据比较多的模块,java的效率没有C高,所以希望用C去完成。对于某些功能模块,可能Ja转载 2016-12-15 16:43:14 · 242 阅读 · 0 评论 -
Android中进程间通信(IPC)方式总结
IPC为进程间通信或跨进程通信,是指两个进程进行进程间通信的过程。在PC和移动设备上一个进程指的是一个程序或者一个应用,所以我们可以将进程间通信简单理解为不同应用之间的通信,当然这种说法并不严谨。 在Android中,为每一个应用程序都分配了一个独立的虚拟机,或者说每个进程都分配一个独立的虚拟机,不同虚拟机在内存分配上有不同的地址空间,这就导致在不同的虚拟机互相访问数据需要借助其转载 2016-12-15 16:38:25 · 357 阅读 · 0 评论 -
图片占用内存计算方法
Android中有四种,分别是:ALPHA_8:每个像素占用1byte内存ARGB_4444:每个像素占用2byte内存ARGB_8888:每个像素占用4byte内存RGB_565:每个像素占用2byte内存Android默认的颜色模式为ARGB_8888,这个颜色模式色彩最细腻,显示质量最高。但同样的,占用的内存也最大。举例说明一个32转载 2016-12-15 16:36:28 · 1195 阅读 · 0 评论 -
Java Android HTTP实现总结
Http(Hypertext Transfer Protocol)超文本传输协议,是一个基于请求/响应模式的无状态的协议,Http1.1版给出了持续连接的机制,客户端建立连接之后,可以发送多次请求,当不会再发送时再关闭连接。 Android使用Java,对于Http协议的基本功能有两种实现方案: 1.使用JDK的java.net包下的HttpURLConnection转载 2016-12-15 16:34:02 · 376 阅读 · 0 评论 -
为什么心跳包(HeartBeat)是必须的?
几乎所有的网游服务端都有心跳包(HeartBeat或Ping)的设计,在最近开发手游服务端时,也用到了心跳包。思考思考,心跳包是必须的吗?为什么需要心跳包?TCP没有提供断线检测的方法吗?TCP提供的KeepAlive机制可以替代HeartBeat吗?由于连接丢失时,TCP不会立即通知应用程序。比如说,客户端程序断线了,服务端的TCP连接不会检测到断线,而是一直处于连接状态。这就带来了很大转载 2016-12-15 16:32:30 · 1275 阅读 · 0 评论 -
推送系统里使用 UPD 还是TCP做心跳包?
UDP是无连接的。客户端每隔一定时间发一次给服务端,服务端每隔一定时间判断一次,如果某个客户端大于一定时间没有包来往,则可认为该客户端“掉线”了。心跳包只是用来负责维护路由端口的,你只需要在最后一次收到或发送数据后的指定时间内,发送一次就可以,至于服务器还是客户端发送并不重要。一般来说,心跳包是一个往复,即从一方发往另一方后,另一方应回复一个确认收到心跳包,否则,由于在中间路由过程转载 2016-12-15 16:31:50 · 1593 阅读 · 0 评论 -
Android 的线程(AsyncTask、HandlerThread、IntentService详解)和线程池
Android 的线程和线程池在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统资源,即线程不可能无限制的产生,并且线程的创建和销毁都有一定的开销。当系统中存在大量的线程时,系统会通过时间片轮转的方式调度每个线程,因此线程不可能做到绝对的并发,除非线程数小于等于CUP的核心数,一般来说这是不可能的。如果在一个进程中频繁的创建和销毁线程,这显然不是高效的做法。正确转载 2016-12-15 16:28:25 · 319 阅读 · 0 评论 -
Android屏幕适配经验谈
先来解释一些相关的名词:屏幕尺寸: 也就是我们平时所说的某某手机是几寸屏, 比如HTC one V这款手机是3.7寸的, 这里的寸说的是英寸(inch),国际上习惯使用的单位,1inch = 2.54cm,3.7寸指的是屏幕的对角线的长度。屏幕分辨率: 指屏幕的宽和高的像素数, 比如HTC one V是480*800的。屏幕密度: 每inch的像素数,比如HTC on转载 2016-12-15 16:47:42 · 186 阅读 · 0 评论 -
Android屏幕适配全攻略(最权威的官方适配指导)
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因、重要概念、解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获!Android屏幕适配出转载 2016-12-15 16:49:34 · 2069 阅读 · 0 评论 -
Android自定义控件之继承ViewGroup创建新容器
欢迎大家来学习本节内容,前几节我们已经学习了其他几种自定义控件,分别是Andriod 自定义控件之音频条及 Andriod 自定义控件之创建可以复用的组合控件还没有学习的同学请先去学习下,因为本节将使用到上几节所讲述的内容。在学习新内容之前,我们先来弄清楚两个问题:1 . 什么是ViewGroup?ViewGroup是一种容器。它包含零个或以上的View及子View。转载 2016-12-15 17:36:55 · 340 阅读 · 0 评论 -
Android开发面试经——6.常见面试官提问Android题②(更新中...)
关注finddreams博客:http://blog.csdn.net/finddreams/article/details/44560061 1.HttpURLConnection和HttpClient他们各自的优缺点是什么? HttpUrlConnection 在 2.3 以前的版本是有 bug 的,所以之前的版本推荐使用 HttpClient,但是 google 现在已经不维护 Ht转载 2016-12-19 21:26:47 · 419 阅读 · 0 评论 -
Android开发面试经——5.常见面试官提问Android题①
关注finddreams博客: http://blog.csdn.net/finddreams/article/details/44513579 一般的面试流程是笔试完就接着是面试了,面试时技术经理会问你一些你工作中遇到的Android方面的问题,谈谈你所做的项目,和在项目中所扮演的角色。今天我就给大家整理一些,面试中常见的面试官提的一些问题?1.要做一个尽可能流畅的ListView,转载 2016-12-19 21:26:36 · 503 阅读 · 0 评论 -
Android开发面试经——4.常见Android进阶笔试题(更新中...)
关注finddreams博客:http://blog.csdn.net/finddreams/article/details/44301359上一篇文章我们已经了解了Android笔试的一些基础题目, [《Android开发面试经——2.常见Android基础笔试题》 ] (http://blog.csdn.net/finddreams/article/details/442192转载 2016-12-19 21:26:15 · 589 阅读 · 0 评论 -
Android开发面试经——3.常见Java基础笔试题
关注finddreams博客:http://blog.csdn.net/finddreams/article/details/44403041 因为Androd使用Java语言来编程的,所以我们做Android开发全面的掌握Java基础是必须的。在面试的过程中,我们发现很多公司发的笔试题有很多知识点都是Java的,搞安卓久了,Java基础的一些知识点也都快忘了,今天就让我们来一起复习一些Jav转载 2016-12-19 21:25:50 · 328 阅读 · 0 评论 -
Android开发面试经——2.常见Android基础笔试题
关注finddreams博客: http://blog.csdn.net/finddreams/article/details/44219231 正值跳槽的热季,整理一下Android面试中最常考的笔试题,为下次找工作时做好充分准备,这是Android的基础部分:1、Android四大组件是什么?作用以及应用场景? Android 的四大组件分别是是Activity,Service转载 2016-12-19 21:25:28 · 362 阅读 · 0 评论 -
Android开发面试经——1.常见人事面试问题
做为程序员,我们都是有梦想的人,有时候当我们不满足现状,想要进一步提升自己的能力,拓展自己的视野时,跳槽可能是一个我们终将面对的选择。可是我们的工作是成天和电脑打交道,造成我们的人际交往,交流能力不是很强,在面试上我们往往要准备的很充分,才能获得一份心仪的好工作,接下来我给大家整理一下面试中常见的一些问题,包括人事面试和笔试题,今天就来说说人事面试:1、请你自我介绍一下你自己?回答转载 2016-12-19 21:24:58 · 365 阅读 · 0 评论 -
Android几种解析XML方式的比较
XML介绍:Extensible Markup Language,即可扩展标记语言一、使用SAX解析XMLSAX(Simple API for XML) 使用流式处理的方式,它并不记录所读内容的相关信息。它是一种以事件为驱动的XML API,解析速度快,占用内存少。使用回调函数来实现。 缺点是不能倒退。二、使用DOM解析XMLDOM(Document Obj转载 2016-12-15 17:45:30 · 304 阅读 · 0 评论 -
AsyncTask 内部实现机制
在 Android 应用开发的过程中,我们需要时刻注意保证应用程序的稳定和 UI 操作响应及时,因为不稳定或响应缓慢的应用将给应用带来不好的印象,严重的用户卸载你的APP,这样你的努力就没有体现的价值了。本文试图从 AsyncTask 的作用说起,进一步的讲解一下内部的实现机制。如果有一些开发经验的人,读完之后应该对使用 AsnycTask 过程中的一些问题豁然开朗,开发经验不丰富的也可以从中找到转载 2016-12-15 17:41:46 · 544 阅读 · 0 评论 -
【Android】IntentService & HandlerThread源码解析
一、前言 在学习Service的时候,我们一定会知道IntentService:官方文档不止一次强调,Service本身是运行在主线程中的(详见:【Android】Service),而主线程中是不适合进行耗时任务的,因而官方文档叮嘱我们一定要在Service中另开线程进行耗时任务处理。IntentService正是为这个目的而诞生的一个优雅设计,让程序员不用再管理线程的开启和允许。转载 2016-12-15 16:25:04 · 236 阅读 · 0 评论 -
[Android实例] Scroll原理-附ScrollView源码分析
想象一下你拿着放大镜贴很近的看一副巨大的清明上河图, 那放大镜里可以看到的内容是很有限的,而随着放大镜的上下左右移动,就可以看到不同的内容了android中手机屏幕就相当于这个放大镜, 而看到的内容是画在一个无限大的画布上~ 画的内容有限, 而手机屏幕可以看到的东西更有限~ 但是背景画布是无限的如果把放大镜的移动比作scroll操作,那么可以理解,这个scroll的距离转载 2016-12-15 16:22:07 · 444 阅读 · 0 评论 -
android Application类的详细介绍
在代码中经常看到application这个类,一直不知道这个是干什么用的,今天刚好有点时间,所以进行了详细的学习。一.先对它的整体概念解释:在Android源码中对他的描述是; * Base class for those who need to maintain global application state. You can * provide转载 2016-12-14 16:37:06 · 468 阅读 · 0 评论 -
Android属性动画完全解析(上),初识属性动画的基本用法
在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame animation)和补间动画(tweened animation)。逐帧动画的工作原理很简单,其实就是将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起来进行播放,类似于动画片的工作原理。补间动画则是可以对View进行一系列转载 2016-12-14 16:22:24 · 137 阅读 · 0 评论 -
Android Matrix的使用与自定义动画
变形矩阵的原理Android对图形的处理通过矩阵,每个像素点都有其X,Y坐标信息,图形变换矩阵是一个3X3的矩阵,通过变换矩阵与位置矩阵相乘得到新的位置矩阵,从而可以通过不同的变换矩阵实现不同的变换效果。 图形变换主要有以下四个基本的变换:Translate,平移Rotate,旋转Scale,缩放Skew,错切可以知道基本的变换矩阵是对角a e i为1,其余为0,转载 2016-12-14 16:15:34 · 340 阅读 · 0 评论 -
各种LaunchMode的使用场景
[1] standard 模式这是默认模式,每次激活Activity时都会创建Activity实例,并放入任务栈中。[2] singleTop 模式如果在任务的栈顶正好存在该Activity的实例,就重用该实例( 会调用实例的 onNewIntent() ),否则就会创建新的实例并放入栈顶,即使栈中已经存在该Activity的实例,只要不在栈顶,都会创建新的实例。[转载 2016-12-14 16:13:22 · 250 阅读 · 0 评论 -
android夯实总结(设计、细节及思想)
1)Android App的生命周期是什么;>前台 后台 关闭 激活 未激活的状态等2)四大组件很熟悉了吧,ContentProvider的生命周期是什么;>ContentProvider通过工具ContentResolver激活,使用者自行管理cursor的生命周期.3)Android设备开机的启动过程; http://blog.jobbole.com/67931/》转载 2016-12-14 09:47:03 · 756 阅读 · 0 评论 -
android view 生命周期
View生命周期相关方法View是什么?官方源码注释中的定义:这个类是用户接口的基础构件。View表示屏幕上的一块矩形区域,负责绘制这个区域和事件处理。View是所有widget类的基类,Widget类用于创建交互式UI构件(按钮,输入框等)。View类的ViewGroup子类是layout的基类,Layout是一个不可见的容器,它保存着View(或ViewGroup)并定义这些Vie转载 2016-12-14 09:43:56 · 227 阅读 · 0 评论 -
Android内存优化(使用SparseArray和ArrayMap代替HashMap)
在Android开发时,我们使用的大部分都是Java的api,比如HashMap这个api,使用率非常高,但是对于Android这种对内存非常敏感的移动平台,很多时候使用一些java的api并不能达到更好的性能,相反反而更消耗内存,所以针对Android这种移动平台,也推出了更符合自己的api,比如SparseArray、ArrayMap用来代替HashMap在有些情况下能带来更好的性能提升。转载 2016-12-14 09:21:38 · 541 阅读 · 0 评论 -
Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递
1.Bundle内部是由ArrayMap实现的,ArrayMap的内部实现是两个数组,一个int数组是存储对象数据对应下标,一个对象数组保存key和value,内部使用二分法对key进行排序,所以在添加、删除、查找数据的时候,都会使用二分法查找,只适合于小数据量操作,如果在数据量比较大的情况下,那么它的性能将退化。而HashMap内部则是数组+链表结构,所以在数据量较少的时候,HashMap的En转载 2016-12-14 09:19:00 · 234 阅读 · 0 评论 -
ContentProvider
一、ContentProvider的概念 ContentProvider:为存储和获取数据提供统一的接口。可以在不同的应用程序之间共享数据。可支持在多个应用中存储和读取数据。这也是跨应用共享数据的唯一方式。在android系统中,没有一个公共的内存区域,供多个应用共享存储数据。Android提供了一些主要数据类型的Contentprovider,比如音频、视频、图片和私人通讯录等。可在andr转载 2016-12-14 16:43:35 · 392 阅读 · 0 评论 -
Android的四大组件之ContentProvider总结
1.适用场景1) ContentProvider为存储和读取数据提供了统一的接口2) 使用ContentProvider,应用程序可以实现数据共享3) Android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等)2.相关概念介绍1)ContentProvider简介 当应用继承ContentProvide转载 2016-12-14 16:56:32 · 194 阅读 · 0 评论 -
Android 编程下 Touch 事件的分发和消费机制
Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev)、onTouchEvent(MotionEvent ev);能够响应这些方法的控件包括:ViewGroup 及其子类、Activity。方法与控件的对应关系如下表所示:Tou转载 2016-12-15 09:37:47 · 193 阅读 · 0 评论 -
浅析android应用增量升级
很久没有更新博客了,真是堕落啊,几次想提起笔,却总是被各种琐事耽搁,以后会多写文章记录点滴。背景 随着android应用体积的不断增大,以及应用版本发布的不断更迭,用户的升级成了一个问题,google也意识到不断更新应用对用户流量的损耗,在Google I/O 上提及的 Smart App update,即应用增量升级,或者叫做差分升级的做法,并在新版本的Google Pla转载 2016-12-15 16:18:16 · 255 阅读 · 0 评论 -
Android AIDL使用详解
1.什么是aidl:aidl是 Android Interface definition language的缩写,一看就明白,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口icp:interprocess communication :内部进程通信 2.既然aidl可以定义并实现进程通信,那么我们怎么使用它呢?文档/android-sdk/do转载 2016-12-15 16:16:01 · 180 阅读 · 0 评论 -
apk签名原理及实现
发布过Android应用的朋友们应该都知道,Android APK的发布是需要签名的。签名机制在Android应用和框架中有着十分重要的作用。例如,Android系统禁止更新安装签名不一致的APK;如果应用需要使用system权限,必须保证APK签名与Framework签名一致,等等。在《APK Crack》一文中,我们了解到,要破解一个APK,必然需要重新对APK进行签名。而这个签名,一转载 2016-12-15 16:15:13 · 269 阅读 · 0 评论 -
APK签名原理
网上已有多篇分析签名的类似文章,但是都有一个共同的问题,就是概念混乱,混乱的一塌糊涂。在了解APK签名原理之前,首先澄清几个概念:消息摘要 -Message Digest简称摘要,请看英文翻译,是摘要,不是签名,网上几乎所有APK签名分析的文章都混淆了这两个概念。摘要的链接http://en.wikipedia.org/wiki/Message_digest简单的说转载 2016-12-15 16:09:46 · 227 阅读 · 0 评论 -
Android保证service不被杀掉-增强版: 进程保活(根据用户需求慎用)
目前市面上的应用,貌似除了微信和手Q都会比较担心被用户或者系统(厂商)杀死问题。本文对Android 进程拉活进行一个总结。Android 进程拉活包括两个层面:A. 提供进程优先级,降低进程被杀死的概率B. 在进程被杀死后,进行拉活本文下面就从这两个方面做一下总结。1. 进程的优先级Android 系统将尽量长时间地保持应用进程,但为了新建转载 2016-12-15 16:08:30 · 495 阅读 · 0 评论 -
android ANR产生原因(三总常见类型)和解决办法
1)什么引发了ANR?在Android里,应用程序的响应性是由Activity Manager和WindowManager系统服务监视的。当它监测到以下情况中的一个时,Android就会针对特定的应用程序显示ANR:在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸)BroadcastReceiver在10秒内没有执行完毕一个ANR对话框显示给用户2)如何避免转载 2016-12-15 10:03:51 · 913 阅读 · 0 评论 -
Android性能提升之强引用、软引用、弱引用、虚引用使用
背景:收到公众投稿,《从面试题中看Java的Reference(引用)》,分析的很不错,总感觉少了实际的例子和应用场景。于是结合自己工作中场景,小总结一下。看下Agenda如下:强引用 软引用 弱引用 什么时候使用软引用,什么时候使用弱引用? 虚引用一、强引用Java中的引用,类似于C++的指针。通过引用,可以对堆中的对象进行操作。在某个函数中,当创建了一个对象,该对象被分配在转载 2016-12-15 09:57:36 · 258 阅读 · 0 评论