☆ 一些闲话
Android自从4.1版本后,系统性能和体验能跟ios有一拼
4.0以下转的Java的程序员,
他如果写点比较次的代码,然后跟着这个比较次的系统,一起获得更加次的体验。
4.1之后,系统性能开始争气了,
他如果写点比较次的代码,然后系统也会能起到点遮羞的作用。
☆ Java转Android优势
1.语言相通,特性相似,入门门槛低
2.编程相关基础比较扎实
3.自学能力比较好(包括搜索能力,阅读,动手,自我管理)等
☆ Android开发前提
1.熟悉ide
2.熟悉安卓提供的开发框架
3.熟悉java及其他编程知识
☆ Android的学习内容
◇ 四大组件
-
Activity
- 中文翻译叫活动,用来表现功能,负责跟用户交互 Service
- 中文翻译叫服务,是后台运行服务,不提供界面呈现 BroadcastReceiver
- 中文翻译叫广播接收器,用于接收广播.一种广泛运用的在应用程序之间传输信息的机制. ContentProvider
-
中文翻译叫内容提供器
支持在多个应用中存储和读取数据,相当于数据库.
是一个第三方应用数据的访问方案.
◇ 其他内容
-
Intent
-
中文翻译叫意图,
它的功能是 传话人
它的使用的场景是,比方说在一个应用程序当中用户有了操作
然后Intent就操作动作,涉及到的数据都进行一个描述记录,然后它就告诉了Android系统,Android就根据它的描述就去找组件去干活,就是调用组件。Android系统要是司令指挥部,Intent就是通信兵之类的角色呀。
每个应用程序是作战兵团呀,应用程序之间可以让Intent传递消息,应用程序内部的Activity/Service之间也可以用Intent传递消息。
Handler
-
Handler是Android操作系统中的线程通信工具,它主要由两个作用:
(1)安排消息或Runnable在某个主线程中某个地方执行
(2)安排一个动作在另外的线程中执行。
每个Handler对象维护两个队列(FIFO),消息队列和Runnable队列,
都是有Android操作系统提供的。
Handler可以通过这两个队列来分别:
发送、接受、处理消息–消息队列;
启动、结束、休眠线程–Runnable队列;
Handler的使用方法大体分为3个步骤:
1.创建Handler对象。
2.创建Runnable和消息。
3.调用post以及sendMessage方法将Runnable和消息添加到队列。
Handler就也是通信兵吧,但是感觉上是个兵团内部的通信兵。打个比方要弄个下载功能,这个功能比较耗时,写在主线程当中,就容易把主线程堵死了,然后5秒钟没有完成,Android司令部就说强制关闭吧。这个时候,可以让Handler去做个安排,把这个弄到子线程当中去。然后主线程干其他的事,这就是异步处理。
-
Adapter
- 中文翻译叫适配器, 后台就是数据,前台就是UI显示(view)。Adapter就是在前台和后台中间的一个东西。是个接口。实现它来适配显示的。 事件的传递方式
- onClick,onTouch JNI
- 洋文是Java Native Interface,中文翻译是Java本地接口,它提供了很多接口跟其他语言进行通信(C或者C++) AIDL
-
1.洋文是Android Interface Definition Language, 中文翻译是安卓接口定义语言。Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。
2.比方说我的安卓系统中有很多应用程序,我的A应用程序提供了一些服务,我的其他应用程序就想用A的这些服务。那么应该怎么办?
Android就指定了一个制度,也可以叫一个解决方案 远程过程调用(Remote Procedure Call,RPC),这个方法其实特别简单,就是用一种接口定义语言(Interface Definition Language,IDL)来公开公开服务的接口.
3.我们知道4个Android应用程序组件中的3个(Activity、BroadcastReceiver和ContentProvider)都可以进行跨进程访问,另外一个Android应用程序组件Service同样可以。因此,可以将这种可以跨进程访问的服务称为AIDL(Android Interface Definition Language)服务。
4.建立AIDL服务的步骤
建立AIDL服务要比建立普通的服务复杂一些,具体步骤如下:
(1)在Eclipse Android工程的Java包目录中建立一个扩展名为aidl的文件。该文件的语法类似于Java代码,但会稍有不同。
(2)如果aidl文件的内容是正确的,
ADT(抽象数据类型,abstract data type)会自动生成一个Java接口文件(*.java)。
(3)建立一个服务类(Service的子类)。
(4)实现由aidl文件生成的Java接口。AIDL接口只支持方法,不能声明静态成员;不会有返回给调用方法的异常。
(5)在AndroidManifest.xml文件中配置AIDL服务,
尤其要注意的是,
标签中android:name的属性值就是客户端要引用该服务的ID,
也就是Intent类的参数值。
☆ Android重点
- 主要是在UI效果上需要花大量时间
- NDK的开发
- SDK的开发
font color=red>SDK广告
就是植入程序里面的广告需要依赖的第3方API。
比如你想在别人使用你开发的程序时展示广告为你带来收入,
你就可以选择下载别人的广告SDK(比如哇棒,admob),
调用它们提供的API,
API会取得和展示广告,
这样你的程序就能在适当的位置显示它们的广告,
当有用户点击广告时,
你就会从广告提供商哪里获得一定比例的推广提成。
所以SDK广告就是内置于程序内的广告开发工具包,
由广告提供商提供。
☆ Android工作经验
- 常见的问题和难点都可以在StackOverflow上找到
- 常用功能/控件的实现也可以在GitHub上找到
- 控制内存开销,优化onTouch事件是永恒的主题
- 手机上非常常用的『下拉刷新』功能,不同App之间还是很有差异的
- Android的UI线程可无法获得如iOS下那么高的优先级
- 当前国内都是以iOS做设计,Android照搬的做法,并且由此产生很多雷同脑残但坚定不移的设计
- 抛弃『UI元素像素位置』这个概念,Android本身是允许通过设定元素像素位置来制作UI,但是这样做导致的结果就是大批量机器不适配,而且不要妄想通过获取屏幕大小来调整UI
- LinearLayout,这个在swing或者swt上可有可无的东西,在Android上是必须要精通
- Android SDK的一个恶心的地方,其内置的apache相关库不是最新的。
是的,当你想着使用