Android 基于openfire即时聊天开发遇到的闪退问题:Already Login to Server

junjun071308 2014-11-17 12:02:14
在Android 客户端开发openfire即时聊天的时候,需求中有切换不同的用户的要求。

(注册用户没有问题)
登录的时候我是这样做的:connectServer-->login

下线的时候我是这么做的:disConnectServer

如果是有一个用户切换到另外一个用户,那么我是这样做的:disConnectServer-->connectServer-->login

由于网络等原因,会出现这样的情况,导致程序闪退:1.not connect to server 2.Already login to server

情况1、2出现的语句都是在login的时候。(ps:我在网络断开后重新连接网络时会去进行重新登录连接,我加了断线重连的监听,但是网络断线恢复后自动重新连接上的速度很慢,所以就自己手动重连)

所以想问一下,如何安全的确保已经成功连接上服务器的时候去登录、或者已经登录过了,那么就不再去登录

附1:登录代码
`

if (!xmppTool.isConnectedServer()) {
xmppTool.connServer();
}
if (xmppTool.isConnectedServer() && !xmppTool.getCon().isAuthenticated()) {
xmppTool.login(name, PWD);


`

附2:下线代码

if (xmppTool.isConnectedServer())
xmppTool.disConnectedServer()


附3:切换用户代码:

if (xmppTool.isConnectedServer())
xmppTool.disConnectedServer();

`if (!xmppTool.isConnectedServer())
xmppTool.connServer();

if (xmppTool.isConnectedServer() && !xmppTool.getCon().isAuthenticated())
xmppTool.login(newName, PWD);
...全文
352 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010951001 2015-12-16
  • 打赏
  • 举报
回复
楼主最后用的哪个包? 我现在一直都是Already Login to server 的问题
happyq 2015-06-27
  • 打赏
  • 举报
回复
引用 5 楼 junjun071308 的回复:
问题解决: 1.not connect to server 的问题需要在openfire服务器那边去设置,网络上搜索一下会有相关的教程,大概就是把安全选项里面的SSL什么的都设置为无效,同时在登录的时候,需要判断一下是否连接成功服务器,如果没有连接成功,那么就连接再去登录 2.Already Login to server 的问题,是我导入的那个smack版本的问题,也就是说这个问题的出现是我导入的包的一个bug,具体的bug描述是:该包的ReconnectManager里面的重新连接方法没有加入Synchronize进行加锁,然后导致了重连的时候会出现冲突,所以如果遇到这个问题的话,需要这样处理:1,看看你导入的这个包里面的ReconnectManager类中重连方法是否加锁,2,导入新包后重连速度快了很多,不需要再去自己手动重连了
楼主最后用的哪个包?
junjun071308 2014-12-04
  • 打赏
  • 举报
回复
问题解决: 1.not connect to server 的问题需要在openfire服务器那边去设置,网络上搜索一下会有相关的教程,大概就是把安全选项里面的SSL什么的都设置为无效,同时在登录的时候,需要判断一下是否连接成功服务器,如果没有连接成功,那么就连接再去登录 2.Already Login to server 的问题,是我导入的那个smack版本的问题,也就是说这个问题的出现是我导入的包的一个bug,具体的bug描述是:该包的ReconnectManager里面的重新连接方法没有加入Synchronize进行加锁,然后导致了重连的时候会出现冲突,所以如果遇到这个问题的话,需要这样处理:1,看看你导入的这个包里面的ReconnectManager类中重连方法是否加锁,2,导入新包后重连速度快了很多,不需要再去自己手动重连了
开发者_android 2014-11-18
  • 打赏
  • 举报
回复
xmpp及时聊天? 登录后,可以让服务器返回一个类似于令牌的东东,下次打开应用,请求直接带上这个东东去服务器进行验证就ok.
xiong1250 2014-11-18
  • 打赏
  • 举报
回复
可以判断是否已经登录成功啊,在断线重连接口加登录状态标准位
junjun071308 2014-11-17
  • 打赏
  • 举报
回复
引用 1 楼 Tibib 的回复:
应该在相应的回调方法中调用
不是很明白,能否给个相关的示例或者相关的教程链接
pobi 2014-11-17
  • 打赏
  • 举报
回复
应该在相应的回调方法中调用

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧