2
我有我的應用程序使用Koush的網絡套接字/ Socket.IO庫只是一個片段。 (https://github.com/koush/android-websockets)Android的Socket.IO與片段
我有一些問題,讓Socket.IO客戶端正常工作與片段生命週期及其線程。
在大多數情況下,我的片段是這樣的:
public class ScoresFragment extends SherlockFragment {
public SocketIOClient socket;
@Override
public void onCreate(Bundle savedInstanceState) {
createSocket();
super.onCreate(savedInstanceState);
}
@Override
public void onPause() {
try {
this.socket.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
super.onPause();
}
@Override
public void onResume() {
socket.connect();
super.onResume();
}
public void createSocket() {
this.socket = new SocketIOClient(URI.create("http://blah-url"), new SocketIOClient.Handler() {
//Required methods here
}
}
@Override
public void onCreateView(LayoutInflater inflater, ViewGroup group, Bundle savedInstanceState) {
//Everything for the layout here
}
}
而我得到的錯誤是在的onPause()方法時我試圖拔掉插座。 套接字連接正常,但只要我改變了碎片,我就會崩潰。
FATAL EXCEPTION: main java.lang.NullPointerException at com.codebutler.android_websockets.SocketIOClient.cleanup(SocketIOClient.java:195) at com.codebutler.android_websockets.SocketIOClient.disconnect(SocketIOClient.java:188) at edu.bgsu.asf.athletics.fragments.ScoresFragment.onPause(ScoresFragment.java:14)
我讀的地方,我可能要警惕線程的,我也可以使用一個處理程序這一點,但對於網絡套接字git的頁面沒有暗示不必使用這樣的事情。提前致謝。
編輯:
SocketIOClient.java的部分:
public void disconnect() throws IOException {
cleanup(); //Line 188
}
/////////////////////////////////////////////
private void cleanup() {
mClient.disconnect();
mClient = null;
mSendLooper.quit(); //Line 195
mSendLooper = null;
mSendHandler = null;
}