Android技术总结1

1. Java中抽象类和接口的区别
2. Callable and Runnable的区别
3. 什么时候该用ArrayList,什么时候该用LinkedList。
4. 怎样把一个类修改为不可变的?不可变类有什么好处?
5. 一行代码创建只有一个线程的线程池
6. ExecutorService的execute和submit方法的区别
7. Checked Exception和UnChecked Exception是什么,说下各自有哪些常见的,有什么区别?
8. 说说java的线程安全问题,如何避免。
9. Looper,Handler,Message三者的关系,他们直接是如何相互协作的
10. layout_gravity 与 gravity的区别
11. include、merge, ViewStub标签使用.
12. 在activity的onCreate方法中能否拿到一个view的宽高?如果不行,是因为什么?有什么方法可以在onCreate中获取view的宽高。
13. 如何快速知道项目里面有哪些没有用的图片资源文件,layout资源文件?
14. Android ndk主要在哪些场景下需要使用?有没有哪些坑? 请具体讲一下。
15. Android应用方法数量超过65K个怎么办?
16. 在Android的Application对象中缓存数据会有什么风险。
17. ListView如何优化效率
18. 简单说明下dispathTouchEvent、onInterceptTouchEvent、onTouchEvent三个方法的用处, 以及简要说明一下View的点击事件的执行流程
19. Android的后台回收内存的优先级
20. 说一下Android系统中用到哪些常用的设计模式
21. 过度绘制(Overdraw)是如何产生的, 怎样避免?
22. Content Provider和AIDL的区别和联系
23. 用过哪些流行的第三方类库。
24. 说说你有哪些常用的性能优化手段, 如果定位内存泄漏
25. 说说MVC模式的原理,Android中有哪些组件 使用了MVC模式,其原理是什么?有没有使用过MVP模式?说说与MVC的区别。
26. 第一个人10岁,第二个人比第一个人大2岁,以此类推,请用递归算法求出第8个人多大?

时间: 2024-09-09 07:46:20

Android技术总结1的相关文章

Android技术18:Android中Adapter类详解

1.Adapter设计模式 Android中adapter接口有很多种实现,例如,ArrayAdapter,BaseAdapter,CursorAdapter,SimpleAdapter,SimpleCursorAdapter等,他们分别对应不同的数据源.例如,ArrayAdater对应List和数组数据源,而CursorAdapter对应Cursor对象(一般从数据库中获取的记录集).这些Adapter都需要getView方法返回当前列表项显示的View对象.当Model发生改变时,会调用Ba

Google Android API官网封杀了,没法查android技术资料的3种解决方案

1.从uhdesk上访问简化版android api在线文档(反应速度极快) http://www.uhdesk.com/simpleandroidoc/index.html 2.下载chm本地文档(19M的样子) http://www.uhdesk.com/doc/Andorid%20API%20docs.chm 3.使用完整版本android api在线文档(明显这个域名的服务器跟不上) http://www.uhdesk.com/androidoc/index.html Google An

Android技术22:Android中AIDL

在Android中进程内部通过全局变量,文件,preference,数据库作为数据的载体实现数据共享和通信.然后在进程之间则需要借助Binder实现IPC调用.Android进程通信框架:服务端,客户端,Linux binder驱动.Binder驱动成为连接两端的桥梁.我们首先通过aidl语言实现一个简单的多进程通信.具体实现步骤如下: 1.定义aidl文件 IService.aidl,定义一个接口,test() ,不包含负责的类和数据. 1 package com.demo.ipc; 2 3

Android技术21:Android异步消息处理线程

Android异步消息处理线程,该线程一直处于无限循环之中,每次从Message Queue中读取消息,然后回调消息处理的方法,Handler的HandlerMessage中处理消息.如果消息队列为空,该线程就挂,等待消息队列中有消息进来,就唤醒线程. 1.Android异步线程内部结构 在线程内部有一个或者多个Handler对象,外部程序通过Handler对象向线程发送异步消息,消息经过Handler传递到Message Queue对象中,每个线程内部只包含一个一个消息队列对象,线程主执行函数

Android技术19:Android系统架构

Android系统架构是学习Android最基本的知识点,经常在技术面试过程中涉及到有关问题,接下来对Android系统架构进行总结. Android官方文档提供资料显示:Android系统分为4个层次,从低到高依次为Linux kernel(Linux内核层),Libraries和Android运行时Runtime,Android Framework,Applications. 1.Applications应用层 该层主要是运行在Andorid系统上的应用程序,如Home,SMS,Contac

Android技术11:Android的线程模型

1.Android的单线程模型 在android应用程序启动时,Android会同时启动一个对应的主线程Main Thread.主线程主要负责处理UI方面的事件,所以又称UI线程.Android应用程序必须遵守单线程模型原则:androidUI操作不是线程安全的,并且这些操作必须在UI线程中完成.UI线程负责事件监听和绘图处理,因此必须保证UI线程能够随便响应用户,所以那些非常耗时的,必须放到其他线程中处理,如网络连接,数据库读取等操作,否超过一定时间没有响应,则应用程序就会终止. 2.消息队列

Android技术10:Java与C语言之间简单数据的传递

由于C语言和Java语言之间很多类型不一致性,因此使用native时,需要数据类型转换.下面演示分别传递整型,字符串,整型数组,Java静态方法传递数据. 1.创建native方法 我们单独创建一个NativeClass类来存放native方法 1 package com.forsta.ndk; 2 3 public class NativeClass { 4 public native int add(int x,int y); 5 public native String showStrin

Android技术9:Android NDK日志调试

在Android中我们经常使用Log来调试程序,NDK中也为我们提供输出日志的方法. 1.引入头文件<android/log.h> #include<android/log.h> 2.定义宏 #define LOG_TAG "System.out.c"#define LOGD(...) _android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,_VA_ARGS_)#define LOGI(...) _android_log_pri

Android技术20:Android的初始化流程

Android系统是如何启动的呢,应用程序是如何启动.下面简要介绍下初始化流程. 1.Android系统的初始化 1.1Android系统会首先启动Linux基础系统,然后引导加载Linux内核并启动初始化进程Init Linux Kernel---->Init(pid=1) 1.2启动守护进程Daemons 启动Usb守护进程,管理USB连接 启动Android Debug Bridge守护进程管理ADB连接 启动Debuggerd Debug守护进程 启动无线接口守护进程管理无线通信 1.3

Android技术16:编写Android中直接可运行的二进制文件

我们都知道Android中所有应用程序都运行在Android的Dalvik虚拟机上,一般程序不直接与操作系统打交道,即便调用底层的方法也通过JNI技术.不过我们可以直接使用C语言编写二进制文件,直接在底层运行.下面演示其步骤. 1.安装下载编译器和链接器软件.Sourcery G++ Lite Edition for ARM. arm-none-linux-gnueabi-gcc.exe是编译命令 bin/arm-none-linux-gnueabi-ld.exe是链接命令 2.编写C代码 为了