最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
AutobahnAndroid的一個(gè)應(yīng)用示范和全局化

    先介紹下Autobahn Android是什么東西,簡單來說,就是github上的一個(gè)開源項(xiàng)目,目的是在Android端實(shí)現(xiàn)WebSocket的協(xié)議,項(xiàng)目的地址在這里,看得懂源碼的童鞋可以去看,地址點(diǎn)這里,貌似還有些發(fā)布/訂閱 模式的東西在里面。

10年積累的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有石獅免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

    接下來說下,我要實(shí)現(xiàn)的目標(biāo),首先我要建立一個(gè)全局的持續(xù)連接,以保證在每個(gè)Activity中,都能調(diào)用它的發(fā)送數(shù)據(jù)的方法

WebSocketUitls.webSocketConnection.sendTextMessage(jsonObject.toString());

當(dāng)然另一點(diǎn)就是,在發(fā)送數(shù)據(jù)后,能在接收返回?cái)?shù)據(jù)的時(shí)能在當(dāng)前的上下文環(huán)境當(dāng)中執(zhí)行相應(yīng)的方法

@Override
public void mySystemMethod(JSONObject json){
    try {
        System.out.println(json.get("data") + "_LoginPage");
        userName = (EditText)findViewById(R.id.userName);
        userName.setText(json.get("data").toString());
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

------------------------------------分割線------------------------------------------------

首先,我定義了一個(gè)工具類,將WebSocket連接對(duì)象進(jìn)行全局化,并定義一個(gè)繼承了MyWebSocketHandler接口的偽處理類,并在全局的返回?cái)?shù)據(jù)的  public void onTextMessage(String payload)中調(diào)用,這樣當(dāng)其他Activity類,new MyWebSocketHandler時(shí),便可以替換onTextMessage中的方法,以實(shí)現(xiàn)回調(diào)的效果

public class WebSocketUitls{
    public static String WS = "ws://ip地址:端口號(hào)";

    public static WebSocketConnection webSocketConnection;

    public static WebSocketHandler webSocketHandler;
    static {
        webSocketConnection = new WebSocketConnection();
        webSocketHandler = new WebSocketHandler(){
            //websocket接受返回?cái)?shù)據(jù)的方法
            @Override
            public void onTextMessage(String payload) {
                super.onTextMessage(payload);
                //調(diào)用自定義方法中的mySystemMethod,當(dāng)其他Activity中重置他的時(shí)候就會(huì)完成替換
                JSONObject jsonObject;
                try {
                    jsonObject = new JSONObject(payload);
                    //要替換的方法
                    myHandler.mySystemMethod(jsonObject);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        };
        try {
            webSocketConnection.connect(WS,webSocketHandler);
        } catch (WebSocketException e) {
            e.printStackTrace();
        }
    }

    //定義一個(gè)初始的全局類
    public static  MyWebSocketHandler myHandler  = new MyWebSocketHandler(){ 
        @Override
        public void mySystemMethod(JSONObject json) {
            //TODO 并沒什么卵用。這個(gè)方法只是占個(gè)位置,以方便以后替代
        }
    };

}
public class LoginPage extends AppCompatActivity{

    private EditText userName;
    @Override
    protected void onResume() {
        super.onResume();
        //將新的方法傳遞給myHandler這全局的處理方法
        WebSocketUitls.myHandler = new LoginHandler();
    }
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_page);

        Button login_btn = (Button)findViewById(R.id.LOGIN_IN);
        login_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final Map map = new HashMap();
                map.put("type","XXXXXXXXX");
                map.put("name","111111");
                map.put("password", "111111");
                final JSONObject jsonObject = new JSONObject(map);
                //組合數(shù)據(jù),這是websocket的請(qǐng)求參數(shù)
                WebSocketUitls.webSocketConnection.sendTextMessage(jsonObject.toString());
            }
        });
    }

    //實(shí)現(xiàn)一個(gè)內(nèi)部類,同時(shí)實(shí)現(xiàn)MyWebSocketHandler這個(gè)接口,
    class LoginHandler implements MyWebSocketHandler{ 

        //實(shí)現(xiàn)這個(gè)方法,以替換全局的處理方法
        @Override
        public void mySystemMethod(JSONObject json){
            try {
                System.out.println(json.get("data") + "_LoginPage");
                userName = (EditText)findViewById(R.id.userName);
                userName.setText(json.get("data").toString());
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }
}
public interface MyWebSocketHandler { 
    public void mySystemMethod(JSONObject json);
}

--------------------------------------分割線----------------------------------------------

可能說的不太有條理, 畢竟能力有限,有哪位大神用過這個(gè)東西,有自己的見解的可以在留言中提出來。

另附上autobahn-0.5.0.jar包。有需要的可以拿去用在自己的項(xiàng)目當(dāng)中,只用一個(gè),其他網(wǎng)上下載的東西,可能會(huì)有兩個(gè)依賴吧,其實(shí)并,不需要,加進(jìn)去也會(huì)編譯出錯(cuò),所以只加入這也個(gè)就可以了。


本文標(biāo)題:AutobahnAndroid的一個(gè)應(yīng)用示范和全局化
URL地址:http://fisionsoft.com.cn/article/jipsgj.html