Android学习系列之一 What’s Android? Getting started
今天学习了第一部分,对于Android的整体结构有了个认识。由底向上依次是基于Linux内核的操作系统、内库和Android runtime,Application framework、最上面的Application。程序用Java语言进行开发。整个平台对底层的包装入微,只提供给开发者一些接口。曾经有人反对将Java作为大学主要的计算机语言来学习,原因就是它让学生最后都忙于翻箱倒柜地找接口。所以,熟练掌握Android提供的API对于我们开发来说是必不可少的。
Application framework:
View 的设计:与Java swt,swing不同在于他是在配置文件中编写,比较灵活。降低了耦合性。
Content provider:用于不同程序之间数据的访问和数据共享
Resourse manager:提供对于本地字符串,布局,图形这些非代码文件的访问
Notification manager使应用程序能在状态栏上提供自定义的警告
Activity manager 管理应用程序的生命周期,提供回退导航。
Libraries:
C library
Media libraries:支持视频(mpeg4/h264),音频(mp3/AAC/AMR),静态图形文件(只限jpg和png)的播放
Freetype : 位图和矢量字体渲染
SQLite:轻量级关系数据库引擎
Android runtime:
每个Android application都有自己的独立进程。运行自己的Dalvik VM实例。DVM 支持在一个设备上同时运行多个实例。在运行时,将已经编译的java class文件通过dx 工具转换为.dex文件,进行优化,减少对内存的占用。这和Android的特性使相关的。手机软件必须占用尽量少的内存,才能更快的响应。
记得当时配置好了环境,运行第一个HelloWorld project,看到模拟器上跳出Hello World两个词的时候还是很兴奋的。接着去研究项目的结构。主要由这样几个部分组成:Activity, Intent&Intent Filter, Intent Receiver, Service和Content Provider,。Activity简单说就是在屏幕上显示的内容,是一个继承了Activity类的java 类,在显示的时候要通过layout, view进行布局。而当你想从一个屏幕转向另一个屏幕的时候,就需要Intent了。整个项目有个Activity注册中心,通过创建一个Intent实例来指向某个activity,(似乎也可以不指向某个具体的activity class)。Intent Filter 用于描述这个activity所能处理的intent. 调用startActivity(MyIntent)转向另一个屏幕,startSubActivity(MyIntent)弹出子窗口。Intent Receiver与Notification Manager相似。用于接受来自外部的消息,比如来了电话,网络不可用,地理位置的改变等等。可以在AndroidManifest.xml中注册,也可以在代码中通过Context.registerReceiver()方法使用。Service是一个幕后工作者,不需要界面。比如你可以打开播放器放一首歌,然后跳出来去看短信,播放歌曲仍然在后台工作。当你想要将某些数据提供给其他应用程序共享的时候,不要忘了Content Provider,它是一个类,实现了让其他应用程序存储和取得数据类型的接口。Android中的进程分为5个层次,ForeGround process:1 当前正在运行的activity.,onResume方法被调用.2 IntentReceiver正在运行,IntentReceiver.nReceiveIntent()被调用。3 service被回调执行。Service.OnCreate(),Service.OnStart(),Service.OnDestory().被调用。Visiable process:一个activity可见,但是处于暂停状态,当前窗口关闭了以后才轮到他执行。onPause()方法被执行。Service process:有一个service的 service.startService()方法被执行。Background process: 不可见的activity,onStop()都被执行。最后是empty process:不包含任何activity,只是为了加快程序下次的运行速度而设的一个缓存。当内存不够时,这一部分最先被回收。
零零碎碎的东西还是不少的,通过NotePad的练习巩固了一下,有个更加理性的认识。首先,项目启动的时候,启动adb,然后运行模拟器,在通过adb install myapplication.apk,将数据加载到模拟器上。(记得以前用Android_SDK_m3的时候,当这个 myapplication.apk之前已经存在的话,并不会去覆盖它。还要手动shell到/app/data下去删掉,它才能加载进去。现在用m5,可以覆盖了~~。)然后就可以去泡杯咖啡慢慢等了~~(m5的模拟器应用程序图标、字体变大了,等待时间也变长了不少@_#!!)。通常等到的是一个not responding的提示。点wait.进去。NotePad中主要涉及到的有对sqlite数据库的操作、activity之间通过Intent转向,以及他们之间通过Bundle的数据传递。还有界面上按钮、行点击的事件响应处理。在这里就不一一敷述。光看sdk没用,还得通过练习加深理解。以后用到某个功能的时候回头copy一下也是不错滴~

更多相关文章

  1. Android——数据存储(Login)
  2. Android深入四大组件(一)应用程序启动过程
  3. android中xml文件的使用详解
  4. android 读取串口数据的服务,android串口
  5. Android 应用程序基础知识(2)
  6. [摘]android 入门xml布局文件
  7. Android 选择文件并返回路径
  8. 关于android xml文件中 android:id="@+id/my_button"的含义疑问
  9. Android gson解析json数据工具类

随机推荐

  1. Android 将 android view 的位置设为右下
  2. android sdk3.0 鈥滃嘲宸⑩€濆垵浣撻獙
  3. 2010:Android 商机之年
  4. Android自适应不同屏幕几种方法
  5. Mac下Android(安卓)Studio 生成jniLibs目
  6. Android Frameworks系列(一) startServic
  7. 一个资深的Android开发者需要掌握哪些技
  8. Android listview中item部分区域添加点击
  9. 你不知道的Runnable接口,深度解析Runnable
  10. Android 驱动和系统开发. 一个简单的例子