android即時通訊開發筆記(一)緒論~實現使用者登入,自動登入,登出功能

來源:互聯網
上載者:User

在代碼中掙紮的死去活來,還是需要把有用的東西記下來,以後慢慢品味。 每次寫demo,總會發現自己的不足之處,也許還有更多的規範與常識我還不知道。今天就學到一個,記錄下。 有時候在activity之間的跳轉時需要傳值,一般可以用intent來做,但是如果遇到一些自訂類型的變數就傳不了了,昨天問了大神,今天寫了代碼,頓時豁然開朗了,原來android的getapplicationcontext正確用法是這樣啊!平常都這個都是有一些函數之類,比如Toast的要用,這次算是漲姿勢了。 平常一個activity擷取內容物件的時候,其實用activity.this就可以了,返回的是這個activity的內容物件,而getapplicationcontext返回的是應用的內容物件,而這個函數的來源就是整個app的老大哥-Application類。這個類構成的內容物件,生命週期和app的生命一樣長,所以,就可以自訂一個類繼承這個類,來儲存一些需要在整個app中用到的變數。 比如: //聲明public ApplicationHelper appState; //函數中appState = ((ApplicationHelper)this.getApplicationContext());public class ApplicationHelper extends Application{public ApplicationHelper getApplicationContext() {          return ((ApplicationHelper) super.getApplicationContext());        }//接下來就是各種要儲存的變數與函數,各種寫啊~}接下來還有一個重點,在Manifest.xml中註冊資訊,只需要在application中加上android:name="***.***.***.ApplicationHelper"即可。  這樣一來,很多傳值的問題就都迎刃而解了。 好吧,下面進入正題 想靠自己的小團隊開發android的 IM,確實是很有挑戰性的,對於我這樣的菜鳥來說,只能摸索著慢慢來了。 用到的環境是openfire,引入了smack的包,這個還是很給力的,網上相關介紹很多,就不詳細介紹了。 搭建好環境引入好包,開始老老實實編代碼~ 第一部分,實現使用者登入,自動登入,登出功能,功能還是很簡單的,主要是有這些 一個歡迎介面的activity,先顯示一張歡迎的圖片,後台開始讀sqlite資料庫,如果沒讀到使用者資訊,動態載入另一個xml(登陸表單)進來讓使用者輸入。輸入後點擊登入,與openfire伺服器端建立串連進行驗證,如果登陸成功,則將使用者資訊存入資料庫。如果在開始能夠讀到使用者資訊,則不會載入登陸視窗,用該資訊完成自動登入。登陸成功後均進入使用者介面。之後可以進行登出使用者的操作,點擊“登出後”,從資料庫中刪除使用者資訊,設定使用者狀態為下線,斷開用戶端與伺服器的串連。 目前的目錄結構是這樣的。。。命名太水,以後類一多,肯定又是傻傻找不到東西的節奏。。。    目前的六個包分別是放適配器,activity,application類,連伺服器代碼,一些工具類,junitest測試類別。 sqlite之前學習過了,項目中對sql操作都封裝過,比較方便了,今天主要還是寫smack相關。 主要的變數我都放在application類中了,方便引用。首先是配置XMPPservices 複製代碼    public XMPPConnection XMPPservices(){        if(connection==null){        ConnectionConfiguration config;        config = new ConnectionConfiguration(IP,PORT);         /** 是否啟用安全驗證 */          config.setSASLAuthenticationEnabled(false);          config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);          /** 是否啟用調試 */          //config.setDebuggerEnabled(true);          return connection = new XMPPConnection(config);         }        else return connection;    }複製代碼關於一些XMPP串連,登陸,登出的方法,封裝到類裡了 複製代碼public class ClientConService {     XMPPConnection connection;    public ClientConService(){}    public ClientConService(XMPPConnection connection){        this.connection = connection;    }    public boolean login(String user, String password) {                 try {              /** 建立串連 */              connection.connect();              /** 登入*/               connection.login(user, password);               return true;          } catch (Exception e) {             e.printStackTrace();              return false;        }      }    public boolean disconnectAccount()        {        try {            //這裡需要先將登陸狀態改變為“離線”,再中斷連線,不然在後台還是上線的狀態            Presence presence = new Presence(Presence.Type.unavailable);              connection.sendPacket(presence);            connection.disconnect();            return true;            } catch (Exception e) {            e.printStackTrace();            return false;            }        } }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.