編輯:關於Android編程
原文鏈接地址:http://socket.io/blog/native-socket-io-and-android/
在本教程中我們將學習如何創建一個聊天客戶端用socket . ioNode. JS做為聊天服務器,我們的 nativate安卓客戶端! 如果你想直接跳轉到代碼,它在GitHub。 否則,繼續讀下去!
跟隨,首先克隆存儲庫:socket.io-android-chat。
應用程序具有以下特點:
Socket.IO提供了一個面向事件的API,可以在所有網絡、設備和浏覽器。 非常健壯的(甚至作品背後的公司代理!)和高性能,這是非常適合多人游戲或實時通信。
第一步是安裝Java Socket。 輸入輸出端與Gradle。
對於這個應用程序,我們將依賴項添加到build.gradle
:
// app/build.gradle
dependencies {
...
compile 'com.github.nkzawa:socket.io-client:0.3.0'
}
我們必須記住添加網絡許可AndroidManifest.xml
。
...
現在我們可以在android上使用socket.IO!
首先,我們必須初始化Socket.io 的一個新實例。如下:
import com.github.nkzawa.socketio.client.IO;
import com.github.nkzawa.socketio.client.Socket;
private Socket mSocket;
{
try {
mSocket = IO.socket("http://chat.socket.io");
} catch (URISyntaxException e) {}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSocket.connect();
}
IO.socket()
返回Sockethttp://chat.socket.io
使用默認選項。 注意,方法緩存結果,所以你可以得到一個相同的 Scocket從任何Activity或Fragment實例的url。
我們顯式調用connect()
在這裡建立連接(與JavaScript客戶端)。 在這個程序中,我們使用onCreate
生命周期回調,但它實際上取決於您的應用程序。
發送數據看起來如下。 在這種情況下,我們發送一個字符串,但你也可以做JSON數據org.json包,甚至還支持二進制數據!
private EditText mInputMessageView;
private void attemptSend() {
String message = mInputMessageView.getText().toString().trim();
if (TextUtils.isEmpty(message)) {
return;
}
mInputMessageView.setText("");
mSocket.emit("new message", message);
}
就像我前面提到的,Socket.IO 是雙向的,這意味著我們可以向服務器發送事件,但也隨時在通信服務器可以發送事件。
然後我們可以Socket監聽事件onCreate
生命周期回調。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSocket.on("new message", onNewMessage);
mSocket.connect();
}
我們監聽 new message事件從其他用戶接收消息。
import com.github.nkzawa.emitter.Emitter;
private Emitter.Listener onNewMessage = new Emitter.Listener() {
@Override
public void call(final Object.. args) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
JSONObject data = (JSONObject) args[0];
String username;
String message;
try {
username = data.getString("username");
message = data.getString("message");
} catch (JSONException e) {
return;
}
// add the message to view
addMessage(username, message);
}
});
}
};
這就是onNewMessage
的樣子。 一個偵聽器的一個實例Emitter.Listener
,必須實施call
方法。 你會注意到裡面的call()
包裝的 Activity# runOnUiThread()
,這是因為回調總是另一個線程從Android UI線程裡面調用,因此我們必須確保將消息添加到UI線程的視圖上。
因為一個Android活動有自己的生命周期,我們也應該仔細管理套接字的狀態,以避免內存洩漏等問題。 在這個程序中,我們將關閉套接字連接,刪除所有的聽眾onDestroy
回調的活動。
@Override
public void onDestroy() {
super.onDestroy();
mSocket.disconnect();
mSocket.off("new message", onNewMessage);
}
調用 off()
刪除new message()的偵聽器事件。
問題描述:用React Native架構的無論是Android APP還是iOS APP,在啟動時都出現白屏現象,時間大概1~3s(根據手機或模擬器的性能不同而不同)。問
以前知道有個KeyboardView這個東西可以自定義鍵盤,但因為一直沒涉及到,所以沒研究過,今天看到工商銀行密碼輸入的鍵盤覺得挺好看,就來研究一下。先看一下工商銀行的圖
前言:那些年我們用過的顯示性能指標 相對其他 Android 性能指標(如內存、CPU、功耗等)而言,顯示性能(包括但不僅限於我們常說的“流暢度”)的概念本來就相對復雜
本文實例講述了Android編程實現仿優酷旋轉菜單效果。分享給大家供大家參考,具體如下:首先,看下效果:不好意思,不會制作動態圖片,只好上傳靜態的了,如果誰會,請教教我吧
B. Little Pony and Harmony Ch