博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决androidpn推送机制服务器断掉之后不能连接的问题
阅读量:7121 次
发布时间:2019-06-28

本文共 1125 字,大约阅读时间需要 3 分钟。

hot3.png

推送使用的是androidpn,当Server晚于Client启动或者Client连接后,Server重启,会出现Client无法再连接的情况。分析是因为Client的连接时,对队列的管理有些问题,
 
private void addTask(Runnable runnable) {   
        Log.d("addTask(runnable)...");   
        taskTracker.increase();   
        synchronized (taskList) {   
            if (taskList.isEmpty() && !running) {   
                running = true;   
                futureTask = taskSubmitter.submit(runnable);   
                if (futureTask == null) {   
                    taskTracker.decrease();   
                }   
            } else {  
            runTask(); 
            taskList.add(runnable);   
            }   
        }   
        Log.d("addTask(runnable)... done");   
    }   
当连接不上服务器时候抛出异常,导致任务列表一直处于被添加而没有执行,需要在esle里面手动跑起连接线程。
如果当之前pn连接成功,服务器重启,那么需要在服务器断开,捕捉到登录失败异常的时候
 } catch (XMPPException e) {
                  xmppManager.setConnection(null);
                    Log.e("LoginTask.run()... xmpp error");
                    Log.e("Failed to login to xmpp server. Caused by: " + e.getMessage());
                    e.printStackTrace();
                    String INVALID_CREDENTIALS_ERROR_CODE = "401";
                    String errorMessage = e.getMessage();
                    if (errorMessage != null && errorMessage.contains(INVALID_CREDENTIALS_ERROR_CODE)) {
                        xmppManager.reregisterAccount();
                        return;
                    }
                    xmppManager.startReconnectionThread();
                }  
执行xmppManager.setConnection(null);将判断是否已经连接服务器置空。这样程序就会自动重新去连接服务器,成功建立新的会话。

转载于:https://my.oschina.net/u/730235/blog/168179

你可能感兴趣的文章
二十四 多重继承
查看>>
jmeter压力性能测试-多台机器并发请求
查看>>
选择编程字体
查看>>
小程序日常工作总结
查看>>
mySql学习笔记:比sql server书写要简单
查看>>
ajax封装
查看>>
例题9-6 UVa11400 Lighting System Design(DP)
查看>>
PAT1087 All Roads Lead to Rome (30)(最短路径+dfs+回溯)
查看>>
I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard-android.sh hacking
查看>>
learn go function callback
查看>>
远程启动程序
查看>>
FZU Tic-Tac-Toe -.- FZU邀请赛 FZU 2283
查看>>
hdu 5492 Find a path dp
查看>>
Leetcode c语言-Divide Two Integers
查看>>
关于j2ee工程发布到was上后,部分更新,例修改web.xml配置文件不起作用的原因解析【转】...
查看>>
二维(字符)数组输入(转载)
查看>>
RN中移动组件开发
查看>>
POJ 3349:Snowflake Snow Snowflakes 六片雪花找相同的 哈希
查看>>
UVA 11090 Going in Cycle!! 二分答案 + bellman-ford
查看>>
第八章:文本处理工具
查看>>