本文主要介绍了Android MMS应用中短信发送的流程,涉及到UI交互、数据库操作、信息处理和发送机制。
在Android系统中,MMS(Multimedia Messaging Service,多媒体信息服务)应用程序处理短信发送的过程相当复杂。首先,当用户创建完一条信息后,系统会在信息数据库中创建对应的记录。用户可以选择放弃、保存为草稿或发送该信息。如果选择发送,信息将进入发送流程。
当用户点击发送按钮,UI界面并不会立即更新,而是通过监听后台处理的回调和数据库变更来更新状态。信息的发送起点是`WorkingMessage`类,它会预处理信息内容,如验证和同步收件人,以及将附件转换为适于发送的PDU格式。对于短信和彩信,`WorkingMessage`会采用不同的处理策略。
对于短信,`WorkingMessage`在处理完基本的准备工作后,会创建一个`SmsMessageSender`实例,并调用其`sendMessage()`方法。在这个过程中,`SmsMessageSender`会接收收件人地址、信息内容和对话ID作为参数。在发送前,`WorkingMessage`会回调UI以更新界面显示。`SmsMessageSender`的任务包括根据收件人列表拆分短信,因为每个收件人可能会收到单独的一条短信。
短信发送的流程中,`SmsMessageSender`会将单条信息拆分成多条,每条对应一个收件人。这涉及到短信的分片技术,确保每个收件人接收到完整的信息内容,即使信息需要发送给多个收件人。在实际发送过程中,Android Frameworks层的`SmsManager`负责执行实际的短信发送任务。
彩信的发送则有所不同,它通常涉及HTTP协议,通过网络发送MMS数据。`WorkingMessage`会调用不同的处理类来生成彩信PDU,并将其提交到服务队列中,由专门的Service负责处理并发送。
整个发送流程涉及到了UI与后台的紧密协作,数据库的操作,以及对短信和彩信协议的理解和实现。这一过程展示了Android系统在处理用户交互和系统服务间的通信方面的复杂性,同时也展现了其灵活性和模块化设计的特点。理解这个流程对于开发者来说,有助于优化和调试MMS相关功能,提高用户体验。