저는 Koush의 웹 소켓/Socket.IO 라이브러리를 단 하나의 조각에만 사용하고 있습니다. (https://github.com/koush/android-websockets)파편이있는 Android Socket.IO
Skeet.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)
은 내가 스레드 조심해야 어딘가에 읽고 나는 이것에 대한 핸들러를 사용 할 수 있지만, 웹 소켓의 자식 페이지는 같은 것을 사용하는 데 암시하지 않습니다. 미리 감사드립니다.
편집 : 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;
}