0
我爲我們的全球Leadbord編寫了一個服務器,現在它實際上可以工作。 如果它處於活動狀態,我可以向其發送數據。但是,如果它失敗了,我的應用程序不會停止。我沒有得到它的解決方案,我希望你能幫助我。這裏是發送:如果服務器宕機,TCPsending會崩潰應用程序
public void saveToDatabase(LeadboardElement element2) {
final LeadboardElement element = element2;
send = false;
// Need to be a thread! else android blocks it because it could take to
// long to send!
this.thread = new Thread() {
public void run() {
try {
Socket soc = new Socket(Config.TCP_SERVERNAME_IP,
Config.TCP_PORT);
DataOutputStream out = new DataOutputStream(
soc.getOutputStream());
DataInputStream in = new DataInputStream(
new BufferedInputStream(soc.getInputStream()));
// to call the save statement!
out.writeInt(0);
// give the stuff
out.writeUTF(element.getName());
out.writeInt(element.getLevel());
out.writeInt(element.getKillPoints());
// close it
out.close();
in.close();
soc.close();
send = true;
//join at every error
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
};
// start it
thread.start();
// join thread
if (!send) {
boolean retry = true;
while(retry)
try {
this.thread.join();
retry = false;
Log.w(TAG, "sending to server stopped!");
} catch (InterruptedException e2) {
Log.w(TAG, "Thread could not be joined");
}
}
}
我注意到,我需要做的是在一個線程,因爲API 5所以它是這樣工作的。如果玩家觸摸屏幕,則在遊戲結束時調用它。一切都停止了,數據被髮送到服務器。如果他們失敗了,我們會陷入黑色的褪色。 我想我需要像超時。我用CountDownTimer
試了一下,但這個實際上並沒有解決問題。
非常感謝!
我很遺憾的轉播,我只是沒有找到這個解決方案。非常感謝快速幫助它修復它! – BennX