SMS-MMS加载列表显示
来源:互联网 发布:拉菲尔定律工资计算法 编辑:程序博客网 时间:2024/05/21 03:26
Android4.2
程序读取数据库中短彩信后用ListView来显示信息,所显示用的适配器为MessageListAdapter。
在适配器的bindView方法中构建MessageItem对象,此对象存储了cursor里的所以信息。每一条View是MessageListItem,MessageListItem调用bind方法把MessageItem传递进去。
bind方法中,一般情况走bindCommonMessage(sameItem)方法。bindCommonMessage方法中短信与彩信在显示文字流程中一致。之后如果是短信则隐藏MMS相关的View。
彩信的加载:
由于彩信的MessageItem在构造时并没有对mSlideshow赋值,在bindCommonMessage方法中,如果mSlideshow==null,则注册PduLoadedCallback接口。而在MessageItem构造时:
mItemLoadedFuture = MmsApp.getApplication().getPduLoaderManager() .getPdu(mMessageUri, loadSlideshow, new PduLoadedMessageItemCallback());在第一次调用getPdu方法时,在PduTask这个Runnable内调用了接口方法,一直回调到bindCommonMessage方法内注册的那个接口方法,方法里又调用了bindCommonMessage方法一次,这次mSlideshow不再为空走else流程显示View.
在getPdu方法内会把SlideshowModel以uri为key存在缓存内,之后访问不再走PduTask,而是直接调用接口方法。注意:缓存PduCache在代码中没有put,其实在PduTask方法的mPduPersister.load(mUri)里put了,单例模式。
第一次打开彩信时bindCommonMessage被调用了3次,其中bindView被调用两次,第一次时启动了PduTask,而Contact调用了接口方法onUpdata导致在主界面的onUpdata方法被调用,进而调用了适配器的刷新,而刷新会导致存在缓存中的MessageItem被清空,从而又构造了一遍MessageItem。待主线程方法执行完后PduTask启动执行。
点击事件:
在ComposeMessageActivity类中给ListView注册了点击事件
mMsgListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (view != null) { ((MessageListItem) view).onMessageListItemClick(); } } });而在彩信流程中的drawPlaybackButton方法中又注册了一次,不过调用的方法相同。在此方法中注册了中心播放按钮mSlideShowButton的点击事件。
setOnClickListener方法中注册了附件图片的点击与长按事件。
长按事件:
mMsgListView.setOnCreateContextMenuListener(mMsgListMenuCreateListener);
- SMS-MMS加载列表显示
- sms mms
- 获取短彩信会话列表 content://mms-sms/conversations
- 短信专题(SMS、MMS)
- SMS,EMS,MMS
- IM MMS SMS XMPP
- 发送SMS、MMS
- MMS/SMS 入口
- Android MMS/SMS 入口
- SMS/MMS provider - MmsSmsDatabaseHelper
- SMS/MMS发送逻辑
- 日本的 iphone4 SMS/MMS
- 详细解析SMS、EMS、MMS
- WAP,SMS,MMS,移动电子邮件
- MMS/SMS 收发流程分析
- SMS <--->MMS自动转换机制
- 发送SMS与MMS过程
- SMS-MMS的草稿箱
- php C++ 扩展
- CUDA5.0+VS2008+VisualAssist安装以及配置
- Poj 2828 Buy Tickets \ Zoj 3635 Cinema in Akiba
- Session设置失效(转帖备忘)
- JMeter使用指南 提高编
- SMS-MMS加载列表显示
- 关于Maven找不到jar包的解决方案
- javascript去除空格
- jsp中servlet的几种跳转方式
- MYSQL 字段时间戳转换为可读日期时间
- android学习-对话框的动画弹出和动画消失
- 101 - The Blocks Problem
- ios5 自定义导航条问题
- Eclipse引入jar包的三种方式