2013-04-02 32 views
0

我正在致力於與web服務進行通信的android項目,以便接收數據並將它們存儲到數據庫中。如何在我的android應用程序和webservice之間的通信期間管理連接丟失?

發送操作之前,我確認連接狀態(參見下面的代碼),此操作過程中

if (XXX.getInstance(Context).isOnline(Context)) 
{ 
//TODO Sending operation 
} 

但如果設備離線我失去DATAS雖然HTTP狀態代碼是200或201

我在手術前管理,但沒有在手術期間管理。

有沒有辦法解決這個問題?

+0

如果我親向您提供答案,請標記。 – mr0mr

回答

1

使用廣播接收機不斷檢查連接的狀態。

先註冊接收器在您的onCreate()方法:

registerReceiver(mReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 

然後寫你想要做什麼,當你需要的信號已經發現:

private BroadcastReceiver mReceiver = new BroadcastReceiver() 
{ 
    public void onReceive(Context context, Intent intent) 
    { 
     cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     netInfo = cm.getActiveNetworkInfo(); 

     if (netInfo != null && netInfo.isConnected()) 
     { 
     //You are still connected 
     } 
     else 
     { 
     //You have lost connection 
     } 
    } 
}; 

確保您註銷接收器,一旦你離開活動(在onDestroy())方法:

if (mReceiver != null) 
{ 
    unregisterReceiver(mReceiver); 
} 
+1

這將檢查設備是否使用Wi-Fi或3G連接到互聯網。 – mr0mr

相關問題