首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android课程(2.1) Activity的详细讲解

2012-08-21 
Android教程(2.1) Activity的详细讲解转自:http://haric.iteye.com/blog/291128[正文]?Activity 是我们开

Android教程(2.1) Activity的详细讲解

转自:http://haric.iteye.com/blog/291128
[正文]

?

Activity 是我们开发Android应用程序最重要的一个类。这个类的内容比较多,我理解多少
就写多少,希望你喜欢:)

这篇文章会涉及到以下几个内容

一 Activity的生命周期
二 让Activity变成一个窗口:Activity属性设定
三 你后台的Activity被系统回收怎么办:onSaveInstanceState
四 调用与被调用:我们的通信使者 - Intent


一 Activity的生命周期

?? 和其他手机平台的应用程序一样,Android的应用程序的生命周期是被统一掌控的,也
?? 就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,只能学习并
?? 适应它。
??
?? 简单地说一下为什么是这样:我们手机在运行一个应用程序的时候,有可能打进来电话
?? 发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另
?? 外系统也不允许你占用太多资源,至少要保证电话功能吧,所以资源不足的时候也就有可?
?? 能被干掉。

?? 言归正传,Activity的基本生命周期如下代码所示:

?

扔出这样一个意图,系统看到了你的意图就唤醒了电话拨号程序,打出来电话。什么读联系人,发短信啊,邮件啊,统统只需要扔出intent就好了,这个部分设计地确实很好啊。

那Intent通过什么来告诉系统需要谁来接受他呢?
通常使用Intent有两种方法,第一种是直接说明需要哪一个类来接收代码如下:

?这里面配置用到了action, data, category这些东西,那么聪明的你一定想到intent里也会有这些东西,然后一匹配不就找到接收者了吗?

action其实就是一个意图的字符串名称。
上面这段intent-filter的配置文件说明了这个Activity可以接受不同的Action,当然相应的程序逻辑也不一样咯,提一下那个mimeType,他是在ContentProvider里定义的,你要是自己实现一个ContentProvider就知道了,必须指定mimeType才能让数据被别人使用。

不知道原理说明白没,总结一句,就是你调用别的界面不是直接new那个界面,而是通过扔出一个intent,让系统帮你去调用那个界面,这样就多么松藕合啊,而且符合了生命周期被系统管理的原则。

想知道category都有啥,Android为你预先定制好的action都有啥等等,请亲自访问官方链接Intent

ps:想知道怎么调用系统应用程序的同学,可以仔细看一下你的logcat,每次运行一个程序的时候是不是有一些信息比如:
Starting activity: Intent { action=android.intent.action.MAIN categories={android.intent.category.LAUNCHER} flags=0x10200000 comp={com.android.camera/com.android.camera.GalleryPicker} }
再对照一下Intent的一些set方法,就知道怎么调用咯,希望你喜欢:)

热点排行