WEB开发网
开发学院手机开发Android 开发 Android MMS/SMS 入口 阅读

Android MMS/SMS 入口

 2010-11-05 00:55:27 来源:WEB开发网   
核心提示:implementation, otherwise be prepared to save all of the state of each view yourself.If called, this method will occur before onStop(). There are no guarantees
implementation, otherwise be prepared to save all of the state of each view yourself.

If called, this method will occur before onStop(). There are no guarantees about whether it will occur before or after onPause().

,大概是说: 这个函数的调用,和onPause()以及onStop()都有区别,但是能保证如果CMA被杀死,他能在onStop()前被调用。

这个函数调用发生的场景发生在类似于,CMA调用了某个Activity: AS, 这个AS运行中CMA不幸要阵亡了,那么,因为用户的界面在AS上,用户可能希望在按下back建或者从home进入之类的场景下,还能重现出CMA当时的状态,于是有了这个函数被调用的必要。

在CMA的onSaveInstanceState()函数中,会保存一份联系人,同时保存workingMessage的subject标题/body正文/uri草稿在数据库中的位置 。

这些信息就够恢复用户离开时的场景了。

(II) initialize

mWorkingMessage = WorkingMessage.createEmpty(this);

initActivityState时,

如果之前CMA在onSaveInstanceState时报存了联系人,则会从旧有联系人里面读取出来,联系人相互之间用“;”分割开 。 workingmessage也由之前保存的变量初始化,这个初始化就基本完成了,返回了。

如果没有保存,则从传入的intent中读取thread_id值,进而得到初始化需要的信息:

如果thread_id>0 ; 那么mConversation从Conversation的cache中,有thread_id取得。

如果thread_id<=0;那么从intent的Date获得thread_id,

再不行,就说明之前没有过这个thread了,可能用户是手写的地址,就从address去产生一个ContactList,从ContactList去Conversation的Cache里匹配得到相应的Conversation

这时候,如果匹配还是没有得到Conversation时,Cache里就会偷偷生成一个Conversation返回回来,适用于你这个状况。

Cache用来保证联系人匹配的所有消息,被放入同一个对话(thread)中。

再还有如果联系人也是空的,那么直接产生一个新的Conversation; 这个Conversation是廉价的,因为他没有thread_id,不被放入cache,在使用ensurethreadid之前,他可以创建无数个,可以随意调用创建出来。

有了conversation之后,就可以initMessageList,查询显示出这个thread下面的所有消息

上一页  1 2 3 4 5  下一页

Tags:Android MMS SMS

编辑录入:coldstar [复制链接] [打 印]
赞助商链接