Android MMS/SMS 入口
2010-11-05 00:55:27 来源:WEB开发网MMS - 入口和联系人,想到什么说什么。
在MMS中最重要的两个ui,或者说是用户操作短信的入口,一个是conversationList(短信列表界面) ,另一个就是ComposeMessageActiity(单个对话或者短信),以后简称CMA。
每个CMA 录属于一个Conversation或者不属于任何conversation(无收件人草稿);每个converation由独立的threadId来相互区分
每个CMA有一个WorkingMessage,唯一,表示这个thread(话题)下,用户编辑的短信草稿。
CMA和ConversationList的launch mode都是singleTop,(关于launch mode,请参考 http://androidappdocs.appspot.com/guide/topics/fundamentals.html)
android的launch mode涉及到Task和Activity,简单点说,用户看到的每个界面,基本上都是一个个的Activity,而这些Activity以栈的形式放入在Task中,比如进栈操作由用户的点击进入其他Activity产生,出栈由用户按下back键完成。
一个Task的属性,由他拥有的第一个Activity,也就是栈底的那个activity决定。
一个Activity的launch mode,就是决定他在Task中的表现特点,比如默认的standard模式,就是没有特点,可以在一个Task里随便加,随便加几个instance都成,还能同时在多个Task中共存,就像IE打开网页那种感觉,没有什么限制。
singleTask是整个手机中只能有一个,而且必须出现在这个Task的栈底。
singleInstance表示这个Acitivity独占了整个Task,这个task只有这么一个Activity,最霸道。
singleTop和standard有点类似,区别是,他会去重用Task顶层的他自己的实体,有点绕,像文档上说的,举个例子就明白了。
比如说ABC是3个Activity,mode是standard,在一个栈中的排列是A-B-C,这时候由C再new一个C的intent时,Task变成A-B-C-C;
如果C的mode凑巧是singleTop,那么顶部只能是一个C,也就是在A-B-C这个场景下,再来一个C时,Task变成A-B-C。只是现在顶部的C已经是崭新的C,不是原来那个。
另外,比如launcher按下一个C的图标,这时候,系统会检索所有以C为栈底的Task,如果找到了,就把他起起来,如果没有,就起一个新的。
(I)
CMA的 onSaveInstanceState 函数
引用一段在文档上的说明,
Called to retrieve per-instance state from an activity before being killed
更多精彩
赞助商链接