[問題] activities 使用同個socket

作者: somoskylin (八七booboo)   2018-09-09 16:02:05
各位前輩們好
小弟android 新手
有一個app使用socket.io去連node.js
第一個activity
使用socket 接收資料做下拉式選單
第二個activity
進行客戶問答
以上都是連相同的ip 跟server
兩個activity我都寫 socket =IO.socket(url);
第二個一直沒辦法連線
我覺得socket是不是要獨立出來
但又不知道怎麼實作
懇請前輩指點迷津
作者: aids61517 (奇歐巴肯)   2018-09-09 19:05:00
Socket做在Service裡面
作者: Liulian (流連)   2018-09-10 09:55:00
我猜第二個沒法連線,是因為port被佔了?然後推一樓的做法
作者: somoskylin (八七booboo)   2018-09-10 16:37:00
謝謝兩位大大 我再看看Service的部分那請問 兩個不一樣的頁面用相同的event該怎麼辦像是使用相同的onConnect
作者: aids61517 (奇歐巴肯)   2018-09-10 20:03:00
多個Activity可以透過Bind Service跟Service溝通,如果你的情況是多個activity需要監聽同一個event,而只有當前的activity需要動作的話可以考慮用生命週期onStart及onStop來註冊/取消註冊
作者: somoskylin (八七booboo)   2018-09-10 22:11:00
謝謝你
作者: daniel098962 (阿河)   2018-09-11 01:32:00
用static去宣告socket 應該就能同一個了吧
作者: somoskylin (八七booboo)   2018-09-11 10:29:00
請問已經連線但第二個頁面要加event是該怎麼辦,我是查到用eventbus
作者: aids61517 (奇歐巴肯)   2018-09-11 14:29:00
我記得socket.io要先將event註冊後才connect,如果是這樣的話你必須先將需要的event註冊,接到後再分給不同的Activity,分配的方式簡單點可以用LocalBroadcastManager,或是你可以自己實作
作者: y3k (激流を制するは静水)   2018-09-11 16:13:00
如果APP小 只是要驗證可行性 static足矣 真的要上場就用service吧
作者: somoskylin (八七booboo)   2018-09-12 10:18:00
謝謝各位前輩指點還有一點是socket io傳送中文有點不穩定,有時候是亂碼,有人用過嗎?用過->遇過

Links booklink

Contact Us: admin [ a t ] ucptt.com