高通android 7.0新建短信流程

原创 2017年09月13日 14:45:04
在短信列表,点击新建短信按钮,进入新建短信流程。
ConversationList.java

public void createNewMessage() {
        startActivity(ComposeMessageActivity.createIntent(this, 0));
    }
新建和打开已有的的区别是传递进去的threadId不一样,新建的threadId为0,也就是数据库中并没有记录。

ComposeMessageActivity.java
onCreate

Window window = ComposeMessageActivity.this.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
设置短信的系统bar,状态栏等的背景是透明的,所以最终效果是跟短信背景一体化。

initResourceRefs();初始化资源,里面具体内容读者自己查看,无非就是调用findViewById来获取控件

mBackgroundQueryHandler = new BackgroundQueryHandler(mContentResolver);这个是用来后台查询数据的

initialize(savedInstanceState, 0);初始化数据
我们主要来看initialize
mWorkingMessage = WorkingMessage.createEmpty(this);创建一个空的WorkingMessage,前面我们说过了,WorkingMessage表示一个正在编辑的短信

initActivityState(savedInstanceState);主要根据传递进来的Intent,来分析处理,对于新建短信,并没有什么需要加载的。后面分析

initMessageList();初始化短信历史列表

if (mConversation.getThreadId() <= 0//新建短信的threadId就是为0,所以走if分支
                && (!mConversation.isGroupChat() || mConversation.getGroupChat() == null)) {
            // Hide the recipients editor so the call to initRecipientsEditor won't get
            // short-circuited.
            hideRecipientEditor();//收件人编辑框只有在新建短信的场景下才会有
            initRecipientsEditor();//初始化收件人编辑框
            updateColorPalette(sPrimaryColorDark);
            setActionBarColor(sPrimaryColorDark);
        } else {
            hideRecipientEditor();
        }

updateSendButtonState();更新发送按钮状态,只有收件人和短信发送内容都有的情况下,且短信可用,默认短信,sim卡可用的情况下,发送按钮才会enable

drawTopPanel(false);//这里的topPanel,是我们添加彩信附件的时候,会在文字编辑框上面出现的区域
if (!mShouldLoadDraft) {//在initialize上面进行判断的,是否加载草稿,新建符合savedInstanceState == null条件,所以是不需要加载草稿
     // We're not loading a draft, so we can draw the bottom panel immediately.
     drawBottomPanel();//主要绘制文字编辑框所在区域,每次调用这个,都会根据当前短信实时状态来绘制。
}
updateTitle(mConversation.getRecipients());//更新标题


onStart
initFocus();初始化焦点
第一次进入短信会话详情界面,焦点主要处于两个地方,要么新建短信等有收件人编辑框的,会处于收件人编辑框,要么焦点会在文本编辑框
if (isRecipientsEditorVisible()) {
            mRecipientsEditor.addTextChangedListener(mRecipientsWatcher);
        }为收件人编辑框添加文本改变监听类,短信的各个状态都会因为收件人的输入删除而发送改变

registerReceiver(mHttpProgressReceiver, mHttpProgressFilter);
// Register a BroadcastReceiver to listen on SD card state.
registerReceiver(mMediaStateReceiver, getMediaStateFilter());
registerReceiver(mAirplaneModeBroadcastReceiver, mAirplaneModeFilter);
registerReceiver(mSimBroadcastReceiver, mSIMStatusChangeFilter);
注册各类广播

getWindow().setSoftInputMode(mode);软键盘相关

CharSequence text = mWorkingMessage.getText();//新建的话这里为null
        if (text != null) {
            mTextEditor.setTextKeepState(text);
        }
        if (!DEFER_LOADING_MESSAGES_AND_DRAFT) {
            loadMessagesAndDraft(1);
        } else {//我们会走else分支
            // HACK: force load messages+draft after max delay, if it's not already loaded.
            // this is to work around when coming out of sleep mode. WindowManager behaves
            // strangely and hides the keyboard when it should be shown, or sometimes initially
            // shows it when we want to hide it. In that case, we never get the onSizeChanged()
            // callback w/ keyboard shown, so we wouldn't know to load the messages+draft.
            mHandler.postDelayed(new Runnable() {
                public void run() {
                    loadMessagesAndDraft(2);//查询短信历史记录和草稿,我们新建短信查询后为空,所以这里就不说了,留着后面说
                }
            }, LOADING_MESSAGES_AND_DRAFT_MAX_DELAY_MS);
        }

onResume
没有特别需要看的。。。

所以其实新建是特别简单的流程,什么都是新的,涉及到的就是收件人编辑框。对于收件人编辑框,我后面会有一个专门的博客来进行说明。
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

高通Android智能平台环境搭建_编译流程分析

转自:http://blog.csdn.net/zhudongya/article/details/6899070 高通Android智能平台环境搭建_编译流程分析  高通...

Android 关机流程分析-案例高通平台

To power off an Android phone, keep pressing power bottom then shutdown menu is appeard. Then choose...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Android短信----发送流程---框架层(Frameworks)

Android短信接收流程---框架层(Frameworks) /framework/base/telephony/java/com/android/internal/telephony/ISms...

关于android 4.4短信(sms)接收流程-状态机篇

关于android 4.4短信(sms)接收流程-状态机篇
  • lzq001
  • lzq001
  • 2015-05-23 19:53
  • 1828

Android 2.3 发短信详细流程

在android中,APP通过SmsManager.java一系列方法实现发送短信的功能,而发送的内容有很很多种,比如sendTextMessage、sendMultipartTextMessage、...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)