Beem代码分析
来源:互联网 发布:淘宝网大风筝 编辑:程序博客网 时间:2024/05/22 10:32
1 首界面Login判断是否连接,如连接直接跳转到ContactList,没有连接的话判断是否配置过,若没有配置过则进入Account.java创建新账户或者使用帐号登录
首界面启动后 通过调用BeemApplication中的如下代码获得登录帐号
mSettings = PreferenceManager.getDefaultSharedPreferences(this);
String login = mSettings.getString(BeemApplication.ACCOUNT_USERNAME_KEY, "");
String password = mSettings.getString(BeemApplication.ACCOUNT_PASSWORD_KEY, "");
如果使用帐号登录,则在AccountConfigure中使用如下代码保存登录信息
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor edit = settings.edit();
edit.putString(BeemApplication.ACCOUNT_USERNAME_KEY, mAccountJID.getText().toString());
edit.putString(BeemApplication.ACCOUNT_PASSWORD_KEY, mAccountPassword.getText().toString());
2 首界面的onStart函数中执行LoginAnim实现登录,登录后进入ContactList
3 在ContactList中点击某个用户后进入Chat.java界面。实现聊天。
4 在Chat.java界面中的sendMessage()函数通过调用接口IChat中的sendMessage函数实现发送消息给其他用户
5 在Chat.java界面中的重载的processMessage函数实现对接收的消息的处理。
关于接收消息,通过注册继承自IMessageListener.Stub 的OnMessageListener实现。而Stub 继承自android.os.Binder,通过重载onTransact函数通过判断消息码,若是TRANSACTION_processMessage消息则接收消息,并通过processMessage函数实现消息的处理。
在onTransact函数中( onTransact的函数定义为Override public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException) 中,若是TRANSACTION_processMessage消息, 则通过如下代码实现获得消息
com.beem.project.beem.service.Message _arg1;
if ((0!=data.readInt())) {
_arg1 = com.beem.project.beem.service.Message.CREATOR.createFromParcel(data);
}
_arg1 就是接收到的消息。data是接收到的系统数据
下面是Stub 中函数processMessage的说明
/**
* This method is executed when a chat receive a message.
* @param chat the chat receiving the message.
* @param msg the message received in the chat.
*/
public void processMessage(com.beem.project.beem.service.aidl.IChat chat, com.beem.project.beem.service.Message msg) throws android.os.RemoteException
onTransact函数是android.os.Binder的一个请求分发函数。而android的binder机制则提供了一种进程间通信的方法。
另外可参见http://www.docin.com/p-386955447.html(android内核剖析,讲解了 Binder、aidl等等),有本书叫《android内核剖析》。了解更多。
- Beem代码分析
- Google voice开源项目--- BEEM-Jingle
- 关于xmpp的开源工程Beem学习
- 分析代码
- 代码分析
- 分析代码
- 代码分析
- 分析代码
- 代码分析
- 代码分析
- 代码分析
- butterknife源码分析:代码分析
- Bittorrent 精彩代码分析
- Duwamish代码分析篇
- 井字棋游戏 代码分析
- VC6启动代码分析
- Duwamish代码分析篇
- 定时器代码分析
- plist使用的若干问题
- Ext 判断各种浏览器以及操作系统
- 加载图片方式
- js验证电子邮箱的正则表达式
- nGrinder 快照集锦
- Beem代码分析
- scull字符设备注释版(收集的,很详细,不错!)
- sip 认证
- MFC如何调用Flash控件
- 仿IOS弹性ScrollView
- android 性内优化
- Linux内核配置与编译
- PHP数组 判断 空
- sql语句技巧,不敢独享,特此呈上