基於androidpn用戶端修改的APNBB

來源:互聯網
上載者:User

標籤:androidpn   apnbb   推送   android推送   

最近在做推送,採用的架構是androidpn,但對於用戶端實在是修改得受不了了,特別是重連和串連那一塊,有些BUG的修改實在是難以下手,比如在重連那裡,原來的寫法是在死迴圈中不斷調用 xmppManager的串連登入,這樣,就算是重連成功,依然會每20秒加入重連的任務(串連、註冊、登入),然後不斷地去執行。顯示這對CPU等非常浪費。另外,我還要加入介面,讓使用它的用戶端能夠擷取當前的狀態,如斷開、正在串連或已登入。又不想把xmppManager對象直接給暴露出來同時把裡面的相關方法都一個個修改為public的。

考慮到這些原因,最後決定重寫其中的串連機制。

重寫之後,因為與原來的項目差異太大,不好與fork的項目再做合并,就在github上另外建了一個項目。

重寫的內容包括:

    1、基於原來的已經改了若干個BUG的版本進行修改,所以這個版本基本上能修複網上多數人提到的那些BUG。

    2、把重連的流程改為基於廣播機制。因為是應用內廣播,而且不能與其他應用的廣播相衝突,所以對於與這個流程相關的廣播,都採用了LocalBroadcastManager。

    3、不採用原來的線程池,因為是單線程來執行串連、註冊和登入這些task(實現Runnable介面的類),所以用了一個handler。然後,後面會把串連、註冊、登入寫在同一個task裡,而只是分為三個方法(我似乎陷入了作者的誤區,這三個過程本來就不是並行的,它是線性,要一個接一個的,而且是相關的,為什麼要寫成三個Runnable然後在結束後去通知其他runnable執行呢?)。


目前改寫後,已有一版是可以使用的,託管於github上:https://github.com/msdx/APNBB。

由於現在有其他項目在忙,這個項目暫時不再做改動。

未來計劃有:

1、清理代碼(重改為基於廣播機制,只是改寫了重連的那一部分,其他地方還有一些要改的。而且要清理掉已經不再用的一些方法變數)。

2、串連、註冊、登入不再分為三個runnable對象。

3、避免鎖屏時線程掛起的方法,由申請電源鎖改為使用AlarmManager。

基於androidpn用戶端修改的APNBB

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.