2013-05-08 171 views
0

我正在研究必須在後臺工作的應用程序,它必須發送地理定位。它已經在製作中,我們有時會遇到一個問題,即應用程序只是停止發送信息。Android丟失網絡連接,並保持斷開連接

似乎只有電話重新啓動有幫助。

現在我必須解決這個問題,在我看來,重置Networkstack可以解決問題。我的問題是,我如何編程重置網絡連接?或者是否有人對此問題有任何其他建議。

回答

0

我該如何編程重置網絡連接?或者是否有人對此問題有任何其他建議 。

您不應該以編程方式啓動網絡連接。我建議您在將位置發佈到服務器之前檢查網絡連接,並且如果設備已斷開連接,則向用戶顯示通知以啓用網絡連接。

爲什麼我的代碼

此功能不贊成組網絡連接可以花費用戶。因此提出通知並讓用戶啓動網絡連接。

是的,如果用戶dosn't啓動網絡連接您的應用程序不會發布位置了。


更新監聽設備的網絡狀態

註冊一個接收器,以監聽CONNECTIVITY_ACTION

例如:

BroadcastReceiver sampleNetworkStateReceiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.w("sampleNetworkStateReceiver", "Network State has Changed"); 
    //For a disconnect event, the boolean extra EXTRA_NO_CONNECTIVITY is set to true if there are no connected networks at all. 
     // So you need to get EXTRA_NO_CONNECTIVITY extra from intent. 
     // that will tell you if device has loses the conectivity. 

     boolean noConnectivity = 
      intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); 

     if (noConnectivity) { 
      //TODO: Task for Device has no connection 
     } else { 
      //TODO: Task for Device has connection 
     } 
    } 
}; 

IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);   
registerReceiver(sampleNetworkStateReceiver, filter); 

價:NetworkConnectivityListenerDetermining and Monitoring the Connectivity Status

+0

問題是這樣的。我怎麼知道互聯網連接是否因爲沒有可用的網絡連接而消失了,在這種情況下,正確的做法就是等待用戶返回到範圍內,以及電話網絡堆棧崩潰的情況。 – nickik 2013-05-08 14:35:22

+0

@nickik看到我更新的答案。 – 2013-05-09 05:12:25

+0

@nickik你找到這個答案對不對? – 2014-08-27 13:17:38