Ⅰ 我想知道android开发必须要掌握的有哪些知识点
l 熟练运用Android下的自定义控件。
l 熟练掌握Android系统架构,对Android的各个层次的开发有一定的认识。
l 熟练掌握android下的XML,JSON,HTML的解析,熟练掌握各种数据的存储方式,能使用MVC独立开发客户端程序,熟悉安卓下的GPS定位。
l 熟悉android 的JNI 开发,通过JNI实现java与C/C++程序间的调用及回调。
l 熟练掌握UI设计、常用布局、动画特效。熟悉安卓下的消息推送机制原理。
l 熟悉Android下的安全机制。如获取系统最高权限使得不能停止服务,利用守护进程保护服务不被停止,清理内存等。
l 熟悉Android下网络通信机,对Socket通信、TCP、Http有较深刻的了解和经验。
l 熟练应用Mysql,SQLServer,及安卓下的SQLite数据库操作及编码。
l 熟练掌握HTML,DIV/CSS,熟悉JavaScript/Ajax/jquery能实现静态页面的开发。
l 了解HTML5,了解PhoneGAP框架,WebSevice。
熟练使用Eclipse/Myeclipse,CVS/SVN/GIT等开发工具, 对数据结构有深入了解,有C/C++基础
当然你java基础也必须要好 算法什么的
Ⅱ 每个Android 都应必须了解的多线程知识点~
进程是系统调度和资源分配的一个独立单位。
在Android中,一个应用程序就是一个独立的集成,应用运行在一个独立的环境中,可以避免其他应用程序/进程的干扰。当我们启动一个应用程序时,系统就会创建一个进程(该进程是从Zygote中fork出来的,有独立的ID),接着为这个进程创建一个主线程,然后就可以运行MainActivity了,应用程序的组件默认都是运行在其进程中。开发者可以通过设置应用的组件的运行进程,在清单文件中给组件设置:android:process = "进程名";可以达到让组件运行在不同进程中的目的。让组件运行在不同的进程中,既有好处,也有坏处。我们依次的说明下。
好处:每一个应用程序(也就是每一个进程)都会有一个内存预算,所有运行在这个进程中的程序使用的总内存不能超过这个值,让组件运行不同的进程中,可以让主进程可以拥有更多的空间资源。当我们的应用程序比较大,需要的内存资源比较多时(也就是用户会抱怨应用经常出现OutOfMemory时),可以考虑使用多进程。
坏处:每个进程都会有自己的虚拟机实例,因此让在进程间共享一些数据变得相对困难,需要采用进程间的通信来实现数据的共享。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
在Android中,线程会有那么几种状态:创建、就绪、运行、阻塞、结束。当应用程序有组件在运行时,UI线程是处于运行状态的。默认情况下,应用的所有组件的操作都是在UI线程里完成的,包括响应用户的操作(触摸,点击等),组件生命周期方法的调用,UI的更新等。因此如果UI线程处理阻塞状态时(在线程里做一些耗时的操作,如网络连接等),就会不能响应各种操作,如果阻塞时间达到5秒,就会让程序处于ANR(application not response)状态。
1.线程作用
减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能。
2.线程分类
守护线程、非守护线程(用户线程)
2.1 守护线程
定义:守护用户线程的线程,即在程序运行时为其他线程提供一种通用服务
常见:如垃圾回收线程
设置方式:thread.setDaemon(true);//设置该线程为守护线程
2.2 非守护线程(用户线程)
主线程 & 子线程。
2.2.1 主线程(UI线程)
定义:Android系统在程序启动时会自动启动一条主线程
作用:处理四大组件与用户进行交互的事情(如UI、界面交互相关)
因为用户随时会与界面发生交互,因此主线程任何时候都必须保持很高的响应速度,所以主线程不允许进行耗时操作,否则会出现ANR。
2.2.2 子线程(工作线程)
定义:手动创建的线程
作用:耗时的操作(网络请求、I/O操作等)
2.3 守护线程与非守护线程的区别和联系
区别:虚拟机是否已退出,即
a. 当所有用户线程结束时,因为没有守护的必要,所以守护线程也会终止,虚拟机也同样退出
b. 反过来,只要任何用户线程还在运行,守护线程就不会终止,虚拟机就不会退出
3.线程优先级
3.1 表示
线程优先级分为10个级别,分别用Thread类常量表示。
3.2 设置
通过方法setPriority(int grade)进行优先级设置,默认线程优先级是5,即 Thread.NORM_PRIORITY。
4.线程状态
创建状态:当用 new 操作符创建一个线程的时候
就绪状态:调用 start 方法,处于就绪状态的线程并不一定马上就会执行 run 方法,还需要等待CPU的调度
运行状态:CPU 开始调度线程,并开始执行 run 方法
阻塞(挂起)状态:线程的执行过程中由于一些原因进入阻塞状态,比如:调用 sleep/wait 方法、尝试去得到一个锁等
结束(消亡)状态:run 方法执行完 或者 执行过程中遇到了一个异常
(1)start()和run()的区别
通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。调用Thread类调用run()方法来完成其运行操作的,方法run()称为线程体,它包含了要执行的这个线程的内容,run()运行结束,此线程终止,然后CPU再调度其它线程。
(2)sleep()、wait()、yield()的区别
sleep()方法属于Thread类,wait()方法属于Object类。
调用sleep()方法,线程不会释放对象锁,只是暂停执行指定的时间,会自动恢复运行状态;调用wait()方法,线程会放弃对象锁,进入等待此对象的等待锁定池,不调用notify()方法,线程永远处于就绪(挂起)状态。
yield()直接由运行状态跳回就绪状态,表示退让线程,让出CPU,让CPU调度器重新调度。礼让可能成功,也可能不成功,也就是说,回到调度器和其他线程进行公平竞争。
1.Android线程的原则
(1)为什么不能再主线程中做耗时操作
防止ANR, 不能在UI主线程中做耗时的操作,因此我们可以把耗时的操作放在另一个工作线程中去做。操作完成后,再通知UI主线程做出相应的响应。这就需要掌握线程间通信的方式了。 在Android中提供了两种线程间的通信方式:一种是AsyncTask机制,另一种是Handler机制。
(2)为什么不能在非UI线程中更新UI 因为Android的UI线程是非线程安全的,应用更新UI,是调用invalidate()方法来实现界面的重绘,而invalidate()方法是非线程安全的,也就是说当我们在非UI线程来更新UI时,可能会有其他的线程或UI线程也在更新UI,这就会导致界面更新的不同步。因此我们不能在非UI主线程中做更新UI的操作。
2.Android实现多线程的几种方式
3.为何需要多线程
多线程的本质就是异步处理,直观一点说就是不要让用户感觉到“很卡”。
4.多线程机制的核心是啥
多线程核心机制是Handler
推荐Handler讲解视频: 面试总被问到Handler?带你从源码的角度解读Handler核心机制
根据上方提到的 多进程、多线程、Handler 问题,我整理了一套 Binder与Handler 机制解析的学习文档,提供给大家进行学习参考,有需要的可以 点击这里直接获取!!! 里面记录许多Android 相关学习知识点。
Ⅲ 做Android开发 需要掌握哪些知识
Android开发是基于Linux平台,在java基础之上,用来开发手机APP的一门编程语言
判断是否可以从事安卓开发的相关工作,可以从以下三个方面思考:
1,Android基础阶段:平台架构特性(JAVA/C) Market/应用程序组件 环境搭建与部署/打包与发布 AVD/DDMS/AAPT 调试与测试 。
2,Android进阶初级:组件Widget/ 菜单Menu/ 布局Layout 详解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL数据库原理。
3,Android进阶高级:蓝牙/WIFI SMS/MMS 应用实现 深层次解析GPS原理。
实现LocationManager/LocationProvider 进行定位/跟踪/查找/趋近警告以及Geocoder正逆向编解码等技术细节 2D图形库(Graphics/View)详解 SDCARD/传感器/手势 应用实现
如果自身实力还不到位的话,可以点 击 头 像 试 听 课 程了解一下,专业的事要由专业的人来做。
Ⅳ 安卓开发需要学什么
安卓开发需要学:
一、应用程序
Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类负责创建视窗,一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。
二、中介软件
操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。
Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。
三、硬件抽像层
Android 的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL
的目的是为了把 Android framework 与 Linux kernel 隔开。
让 Android 不至过度依赖 Linux
kernel,以达成 kernel independent 的概念,也让 Android framework
的开发能在不考量驱动程序实现的前提下进行发展。
四、编程语言
Android 是运行于 Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持。
包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。
五、安全控制
目前Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Managemeat),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型等。
下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。
参考资料来源:网络—android开发
Ⅳ 有Android知识点总结的朋友帮下忙传一个 谢谢!!!
一、什么是Android 系统。 ——Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用 软件 组成,号称是首个为移动终端打造的真正开放和完整的移动 软件 。 ——2008年9月22日,美国运营商T-MobileUSA在纽约正式发布第一款Google手机——T-Mobile G1。该款手机为台*湾宏达电(HTC)代工制造,是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率7.2Mbps,并支持Wi-Fi。 ——Android 是Google开发的基于Linux平台的开源手机操作系统。它摩托罗拉的首款Android手机CLIQ包括操作系统、用户界面和应用程序 —— 移动电话工作所需的全部 软件 ,而且不存在任何以往阻碍移动产业创新的专有权障碍。Google与开放手机联盟合作开发了 Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和 T-Mobile 在内的 30 多家技术和无线应用的领军企业组成。Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话 软件 平台,在移动产业内形成一个开放式的生态系统。 ——它采用了 软件 堆层(software stack,又名 软件 叠层)的架构,主要分为三部分:低层以Linux核心工作为基础,只提供基本功能,其他的应用 软件 则由各公司自行开发,以java作为编写程式的一部分。另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟(Open Handset Alliance)。比如hero 的UI 界面即由HTC 自行研发,名为Senes,之前,没有一款Android 手机有如此华丽、人性化的界面,由此带来了Android 世界新的界面革命! ——与iPhone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台。 二、HTC、多普达是什么。 ——多普达是宏达(HTC)的全资子公司,多普达是其自有品牌。通俗的讲,多普达的东家就是宏达(HTC),负责操作多普达在国内运营。而HTC 则是台*湾的一家ODM(Original Design Manufacturer,原始设计制造商,自己设计产品,给其它品牌贴牌)厂商。 ——宏达(HTC)主要以OEM 为主,给欧美各大运营商做定制手机,原来自己本身的产品不对外销售。宏达(HTC)旗下拥有多普达和多普达国际两家企业,为了能使自己的家的两个“多普达”都能够在激烈的竞争中生存,HTC 也对它们做了一些强有力的保护措施。 ——多普达在武汉的工厂主要以零部件组装为主,机器的主要部件主要是从上家处采购,这里指的上家自然就是宏达(HTC)了,其实从设计到生产,多数是由HTC 来负责。同时这也解释了为什么我们在一些评测中经常提及HTC,其实HTC XXX就是原厂型号,因为给不同的运营商定制,所以最终到了运营商手上的机器型号命名都是不同的。 ——宏达(HTC)是负责设计和生产原型手机,一开始自己并不负责销售,销售全都交给定制的运营商来负责,所以宏达(HTC)的合作伙伴都是各大运营商,自己家负责销售的只有多普达。当然,现在HTC 也推出了自有品牌。所以,关于HTC 和多普达就是水货和行货的说法是不全对的,HTC 现在已经是个向亚太地区之外推广的正宗手机品牌了。三、APK 是什么。 ——APK 是Android Package 的缩写,即Android安装包。APK 是类似Symbian Sis 或Sisx 的文件格式。通过将APK 文件直接传到Android 模拟器或Android 手机中执行即可安装。我们安装APK 一般有这样几种途径: 1、使用电脑上的 91手机助手 for Android 程序,连接手机进行安装,此方法简单明了,只要连接好手机,在你的电脑上双击APK 文件,即可将程序安装在手机上; 2、将APK 文件拷贝入手机的存储卡,在手机上运行安装好的APK 程序安装器,找到拷贝的APK 文件进行安装。 3、直接使用手机在“电子市场”、“ 安卓 市场”上面在线下载安装。(你在两个市场下载安装过的 软件 ,都在data/app 和 data/app-private 的文件夹里面,把这两个文件夹的文件(apk和zip)都拷贝出来,放一起,用安装有91手机助手的电脑,挨个双击,会显示哪个是哪个,自己可以改好中文名字,下次再装可就不用爬去 安卓 市场和电子市场找了,直接一顿双击,安完。) 四、什么是ROM,什么是RUU。 ——ROM,是用来刷你手机系统的数据文件,也就是Android 系统的封装包,通过手机的工程模式解压安装到手机中形成你手机的操作系统。官方原版ROM 就是RUU,(相当于原版Windows XP)首先他是一个最安全的升级工具,可以让我们安全的升级ROM (一定要对应的机型)。当我们在刷机过程中由于不当的操作或版本选择的错误,导致无法启动,可以使用官方的RUU 程序来恢复系统,等于说,这是一个救命道具。 ——除了官方的RUU 之外,还能运行很多由高手们自制、定制、优化了的Android 系统,比如安逸、MoDaCo、FLZYUP 这些ROM ,就好像一个Ghost XP 的Ghost 文件,就如同深度、番茄花园、雨木林风等等不同的Ghost XP 系统,直接拷贝在存储卡上,使用手机的Recovery 模式就可以安装。五、什么是Radio。 ——Radio指代的是通讯模块,就是手机里面负责信号部分的模块,PDA类型的手机,基本都强调这么个概念。一个是PDA,一个是手机(貌似是句废话- -),举个很简单的例子,以三星的PPC手机为例,比如i718.比如i908,他们在刷机的时候(所谓刷机就是重装系统)一般都是分两部分,第一部分刷手机部分,第二部分刷PDA部分,而且两部分基本不相干。 六、我怎么知道我的手机版本。 在手机设置——关于手机,可以查看你的固件、手机操作系统、radio(baseband版本即是)的版本。根据你的使用情况和你的手机的版本,你可以决定是否对手机进行升级。 七、什么是app2sd。 ——Google 手机的 软件 为了安全性和稳定性都是默认安装到手机内存里,但是手机内存有限,所以我们会做app2sd 操作,来让我们安装的 软件 放到sd卡上,而Google 的android 系统是基于Linux 的,所以存储卡上本身的Fat 格式是不会被识别的,所以我们要分区(第二分区)出来,格式成Linux 认识的ext2 或3 或4 格式,在用链接命令,把这个分区映射成一个系统文件夹system/sd(大概这个意思),把所有的 软件 装到这个“文件夹”下,这就是app2sd 的操作。需要ROM 支持并开启app2sd 功能。 ——app2sd 的操作其实是牺牲了一部分 软件 的速度和稳定性来换取更多的手机内存安装更多的 软件 。另外,app2sd只是把 软件 放到了sd卡上,运行 软件 还是需要占用手机的内存的,所以,你装了 软件 之后,一般手机内存还是会减少一些。你如果安装的 软件 在70个以内,个人觉得没有必要,呵呵,如果很多游戏 软件 除外。此外,使用app2sd 最大的好处就是,刷一个带app2sd 的rom 之后,以后升级这个rom(依然带app2sd)的时候,你的 软件 都会完整保存(个别除外,比如htc 无效 chinese需要重新添加几个文件到system/lib下),不过很多ROM 是需要Wipe ext 分区的,也就不能保留了。 ——目前来看我们现在所使用的Android 各种 软件 暂时还没有进行app2sd 的必要。
Ⅵ 新手刚刚学习android,推荐android开发的入门教程
学习android注意事项:
1,android技术准备实训目标:通过这部分的学习,学员能够达到学习android开发课程的基本要求。熟练使用Java语言,实现GUI桌面应用程序的开发JDK的安装和配置开发工具Eclipse3.4安装。实训知识点: Java标识符、数据类型流程控制、面向对象编程、继承、抽象类、接口、包、异常、IO流、Swing、游戏算法介绍
,2,android入门实训目标:通过这部分的学习,学员具备了android程序开发的能力,能独立完成常用的应用软件。实训知识点: Android系统概述和内置工具、Android 开发环境的搭建和启动模拟器、建立android工程、Android应用程序开发及运行编译结构、API参考文档的使用、使用am工具启动android应用程序、部署应用到真实手机、控件和事件编程、菜单编程、对话框编程、视图组编程、各种布局的使用、Grid视图组、List视图组、使用Tab组织UI
,3,android进阶实训目标:通过这部分的学习,学员的android开发能力会有大幅提高。等传感器编程、android优化和性能提高。实训知识点及案例分析:Service概述、创建和启动、生命周期、权限及跨进程调用;广播的概念及生命周期、广播发送的权限广播接收器的实现、接收SMS短信、播放MP3;内容提供器的概念作用和常见接口、使用内容提供器实现增删改查、内容提供其权限和创建内容提供器、SQLite数据库添删改查操作、使用list视图组显示数据;Widget概念和制作方法、Widget各种XML描述文件详解2D图形图像及文本、Gallery UI编程、GridView编程、OnDraw编程、drawable编程基本动画编程技巧、Tween动画、Frame动画、TimerOpenGL ES的2D和3D绘图GPS服务、GPRS网络使用、android蓝牙开发、android方向、加速表、光线、磁场、临近性、温度
4,项目实战实训目标:本阶段让学员开发,设计Android网上购物系统,其中包括Android图形界面开发,Android声音,Android网络通讯,和服务器后端进行通讯交换数据。
Android基础知识:
一、Android开发的分类:
1、Android客户端应用程序
如新浪微博、网银客户端、凡客、淘宝客户端,快盘客户端。Android在这里的应用还是界面层的东西为主。核心还在WEB。客户端界面很重要,用户体验度很重要。从应用需求上来讲,几乎大一点的网站,都需要有手机客户端程序。
2、Android通用类程序
如基于LBS(基于位置的服务)的应用 (这类一般会嵌入到客户端应用程序中),流媒体播放应用。由于移动设备的方便便捷、3G、4G网络的发展,这类应用有不错的前景。
3、Android游戏开发
需要掌握的游戏引擎LGame,游戏框架等。手机上的游戏会是一大块内容,有前途。
4、Android底层开发
需要掌握C、Linux等较底层的东西,发展方向应该是驱动、协议开发,嵌入式开发。
开始学习了解一般从界面、控件开始,这也是大部分人认为简单、比较快上手的原因。学习一段时间后,自己可以定一个方向发展。
二、Android学习需要哪些知识点
1、Java基础知识
J2SE:Java基础类(lang包,IO包,util包(集合框架),面向对象,多线程,网络编程)
2、J2EE知识
如果你想从事的Android客户端应用程序的开发,这部分知识是必备的。显然Android客户端只是做的数据的请求、展现,所需的数据在服务器端。
技能点:Tomcat(Weblogic),XML解析,JSON解析,JSP/Servlet。了解SSH。
3、Linux、C语言知识
可以作为你后续发展需要了解的。
在论坛上、QQ上看到不少童鞋Java基础还比较欠缺,就开始搞Android了,当然就问题多多。学习热情可嘉,但需要打一个好的基础,有一个好的学习路线。
三、Android学习比较好的资料
1、应该说现在市面上的书,入门的还是不少,但一般现在只讲了简单控件的单个用法。
《Android开发范例大全》,《Android应用开发详解》可以参考。想了解游戏的话,可以参考《Android2.0游戏开发实战宝典》。
2、Android学习视频,也基本上停留在讲简单入门,单个控件用法为主,这方面远不及Java,J2EE,SSH的视频那么丰富。应该讲,你看完了这些,离开发还有很大一段距离。而且,这些视频在讲课方法上不如一些Java的好。现在的视频资料太丰富,从哈佛、斯坦福的课程,到IPHONE开发课程,都有。但全部跟着视频完成所有的学习,有很长一段跟要走。
3、Android的论坛比较多,论坛的缺点就是什么东西得自己一个个查找、去等。自学是一个艰苦而漫长的过程。对你的锻炼和提升也最大。自学有一个缺点,就是容易迷失方向,一个知识点你永远不知道要掌握多深,相关的应用是什么。自学就好比像你一个人在走一条目标很远,前面叉路很多的暗道一样。
4、培训机构学习。如果你时间上允许不失为一种好的选择,可以快速入门。互联网产品(时代)有一个重要特点,就是拿资金换时间。如果能快速入门,到这个行业去发展,就比自己慢慢学习要好得多。毕竟现在Android开发太热了。对开发人员的要求也会逐渐提高。(如既要求能做Android开发,又做IPHONE移植开发)。