編輯:關於android開發
今天研究這個問題搞了整整一天啊!終於出來了,不過我沒有多大的成就感,為什麼呢?因為這是我學長的勞動成果。同樣的問題,我卻沒想出來!心塞的很啊……
不過還是要給大家分享一下,希望給大家帶來幫助!
先聲明一下:不是我不放源碼,是因為這個功能是我項目的一小部分,貼源碼太聲勢浩蕩了,,而且下載後不一定能用,所以就貼核心代碼啦~
我是以每分鐘向服務端發送一個心跳來保持連接的,如下:
sendObject()中的代碼(就是發送內容到服務端):
public void sendObject(String obj) throws IOException { DataOutputStream os = new DataOutputStream(socket.getOutputStream()); os.write(obj.getBytes()); os.flush(); System.out.println("發送:" + obj + "客戶端"); }
重點來了,怎麼保證服務重啟時候自動連接呢?
public static void resetSocket(){ while(SocketClient.isServerClose(socket)){ try { socket = new Socket(SERVERIP,PORT); } catch (UnknownHostException e) { // TODO Auto-generated catch block //e.printStackTrace(); } catch (IOException e) { System.out.println("正在重連...."); // TODO Auto-generated catch block //e.printStackTrace(); } } } /** * 判斷是否斷開連接,斷開返回true,沒有返回false * @param socket * @return */ public static Boolean isServerClose(Socket socket){ try{ socket.sendUrgentData(0);//發送1個字節的緊急數據,默認情況下,服務器端沒有開啟緊急數據處理,不影響正常通信 return false; }catch(Exception se){ return true; } }
最後,將SocketClient.resetSocket();放入圖片中的catch{}中,捕獲異常的時候重新連接,就可以實現想要的效果了。
希望給大家帶來幫助,謝謝!
安卓 應用程序修改圖標不更新,安卓圖標自己在做項目時,真機測試時想更換應用程序的圖標(虛擬機更換後可以更新),但是更換後重新運行並沒有更新圖標。經過嘗試,最終通過重啟手機
QQ好友列表向左滑動出現置頂、刪除--第三方開源--SwipeMenuListView,swipemenulistview SwipeMenuListView是在gith
Android 應用程序集成Google 登錄,androidgoogle谷歌登錄API: https://developers.google.com/ide
Android UI ListView的使用,androidlistview一、ListView的理解 1.什麼ListView?