Android学习基本概念

一 了解android

Android是非常流行的手机操作系统了, 现在android市场占有率在70%以上, 他的编程自然是一个很大的市场了。 最近也学习了一下android的编程知识,在网络上查找了很多文章, 找了很多资料, 把相关内容总结一下。

android的维基百科:http://zh.wikipedia.org/zh/Android

Android开发用的开发语言:
Java (学习Android之前最好有Java基础 android视频那个人出了一套android的java基础教程, 有时间我分享一下,我看了人家写的很好,值得学习和研究)

Android系统:
Android是基于Linux系统针对手机开发的系统

二 Android的大框架:

Android应用程序开发是基于组件的开发:
Android四大组件:

1. Activities

Activity之间的关系:
一个Activities代表一个单独和用户界面。

相当于windows中的窗口, 其实android程序同windows 的dot net下的 form窗体很像 ,一个程序由多少个窗体组成, 每个窗体内部有多个控件, 控件有消息, 窗体有消息。 各个窗体直接可以相互通讯。连ui线程是不安全都是一样。 仅仅是开发语言不一样了,换成java, 执行环境更换成linux了。
一个程序可以有多个Activity,不同程序里和同一个程序里的Activity可以通过Content Provider来交流(Intent就是Content下的一个类)

Activity的生命周期: -- 具体生命周期中的切换触发情况见Android Developer Doc

android的activity生命周期

生命周期是非常重要的事情, 不了解声明周期, 有时候您写代码到不同事件中, 可能造成 非预期的效果。 声明周期中要特别注意: 那些是可以显示前的 事件, 那些是显示后的事件。  那些是切换时发生的。  这个相关情况, 在后面参考视频中有详细讲解,欢迎观看。

Activities是被Task的back stack所管理:   这个概念比麻烦, 初学可以忽略,以后慢慢在看了。
Task是一系列Activity的集合(用户交互时的Activity)
Task运行概念图:

android的task简图

Back Stack运行概念图:

android的task

Activity的状态也可以通过启动的时候传入一些Flag来指定,也可以通过在Mainifest.xml里面指定:
e.g.
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_SINGLE_TOP

如何创建一个自己的Activity:
1. 创建一个类,并继承至Activity
2. 重写一些必要的生命周期函数
3. 在Mainifest里面注册Activity

2. Services

A Service是一个应用程序里做那些需要长期运行但是不需要和用户交互或者为其他应用程序提供服务的组件

Service的两个特点:

  1.      一个告诉应用程序哪些事需要在后台去做的组件
  2.      一个把应用程序的一些功能暴露给其他应用程序的组件

Service Lifecycle:

  1.      开启服务 -- Context.startService()

这里系统回去查看有哪些服务,如果未被开启会先调用Service::onCreate()方法,然后在调用onStartCommand(),否则只调用onStartCommand()

  1.      关闭服务 – Context.stopService() or stopSelf()

关闭服务的时候会调用Service::onDestroy()方法

具体更多的Lifecycle还跟Service在特定情况下的优先级有关,具体查看Service文档

注意:

Service不是一个单独的进程也不是一个单独的线程

  1. Content Provider

提供为存储和获取数据提供了统一的接口

可以在不同的应用程序之间共享数据

URI (Unique resource identify) – 每一个content provider都有一个唯一的URI

更多内容参考Android文档

4. Broadcast Receivers

分为发送方()和接收方(BroadcastReceiver)

针对发送方的事件进行特定处理

需要通过1. AndroidManifest.xml去注册接受者(***) 2.在程序代码中注册—Context.registerReceiver(),IntendFilter类相当于AndroidManifest.xml里的 tag,而且receiver的实例需要自己去初始化),去表明该接受者对哪些action感兴趣,具体处理在接收方的OnReceiver()里

发送方需要定义发送的action和data是什么(封装在Content相关类里),然后通过context.sendBroadCast发送出去(发出后,Android会通过AndroidManifest.xml去查看哪些BroadcastReceiver对该动作感兴趣就生成相应的BroadcastReceiver对象去处理)
针对Android项目里的一些文件和中要知识学习:

详细信息参考资料:  链接:http://pan.baidu.com/s/1dD3vFVF 密码:i9td

 

发表评论