我正在運行一個Android應用程序,該應用程序在特定URL上顯示webview,我想檢查我正在訪問的應用程序服務器是否還活着,並且我可以查看HTML,如果失敗,我應該終止webview,這個檢查應該是每10秒(或其他),對此最好的方法是什麼?Android定期檢查互聯網連接
回答
創建定時器(here you have information)當計時器滴答,平任何主機:
URL url = new URL("http://microsoft.com");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setRequestProperty("User-Agent", "Android Application:"+Z.APP_VERSION);
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1000 * 30); // mTimeout is in seconds
urlc.connect();
if (urlc.getResponseCode() == 200) {
Main.Log("getResponseCode == 200");
return new Boolean(true);
}
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
如果返回true:連接處於活動狀態。否則不活躍。
最好的方法是使用AsyncTask,這樣你的應用就不會凍結。
private class checkServer extends AsyncTask<Integer, Integer, Void> {
@Override
protected Void doInBackground(Integer... params) {
questionRunning = true;
//check if server is running
//now wait 10.000ms (10sec)
try {
Thread.sleep(params[0]);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// Update your layout here
super.onPostExecute(result);
//Do it again!
new checkServer().execute(10000);
}
@Override
protected void onProgressUpdate(Integer... progress) {
}
}
如何叫你的AsynTask:
new checkServer().execute(10000);
我想過這種方式,但認爲它不是異步任務的預期用途,它是關於進度和UI,並且每秒鐘初始化一個新的asynctask效率不夠高,或者您認爲如何? –
您必須使用新的威脅,否則您的主要威脅會凍結幾個(mili)秒。你不希望發生這種事!你可以使用AsyncTask和Timer來解決這個問題。當你創建一個計時器時,你也開始一個新的威脅,一個Asynctask針對Android進行了優化,所以我認爲這是一個很好的解決方案。 – ObAt
啊哈我知道了,我會試試 –
使用-BroadcastReceiver的路,這是高效的,易於實施&現實
As you're saying that you need to check the specific server for alive() or not?. Then it depends upon your choice. But always try to be general.
要接收爲國際米蘭淨連接數降低/增加,監聽 'ConnectivityManager.CONNECTIVITY_ACTION'操作。
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
getApplicationContext().registerReceiver(mNetworkStateIntentReceiver, filter);
每當有連通性,即它可以是數據連接,連接或斷開的變化,您將收到此事件爲廣播,所以在廣播接收器的onReceive,請檢查internetconnect連接和決定互聯網是否啓動或關閉。
BroadcastReceiver mNetworkStateIntentReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION))
{
NetworkInfo info = intent.getParcelableExtra(
ConnectivityManager.EXTRA_NETWORK_INFO);
String typeName = info.getTypeName();
String subtypeName = info.getSubtypeName();
System.out.println("Network is up ******** "+typeName+":::"+subtypeName);
if(checkInternetConnection()== true)
{
"Decide your code logic here...."
}
}
}
}
private boolean checkInternetConnection()
{
ConnectivityManager conMgr = (ConnectivityManager) mContext.getSystemService(mContext.CONNECTIVITY_SERVICE);
// ARE WE CONNECTED TO THE NET
if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() &&conMgr.getActiveNetworkInfo().isConnected())
{
return true;
}
else
{
return false;
}
}
希望它可以幫助你的地方!
我知道關於連接管理器,並已經使用它來檢查一般的互聯網連接,但在我的情況下,我想特意檢查我們的服務器,謝謝 –
- 1. Android連續檢查互聯網連接
- 2. 檢查互聯網連接
- 3. 互聯網連接檢查
- 4. 檢查互聯網連接
- 5. 檢查互聯網連接
- 6. 檢查互聯網連接
- 7. 檢查互聯網連接
- 8. Android互聯網連接檢查
- 9. 在Android中檢查互聯網連接
- 10. Android互聯網連接檢查問題
- 11. 在Android上檢查互聯網連接
- 12. Android檢查互聯網連接
- 13. 超時檢查互聯網連接Android
- 14. Android,檢查互聯網連接
- 15. 在android中檢查互聯網連接
- 16. 在Android上檢查互聯網連接
- 17. Android:檢查互聯網連接
- 18. Android自動檢查互聯網連接
- 19. Android自動檢查互聯網連接
- 20. 檢查互聯網連接或不斷檢查互聯網連接
- 21. Android - 檢查互聯網連接,並自動連接
- 22. Android - 使用ping檢查互聯網連接的大量綁定
- 23. 在android中檢測互聯網連接
- 24. 檢測互聯網連接
- 25. 檢測互聯網連接
- 26. Strophe.js:檢查互聯網連接
- 27. 檢查互聯網連接OKHTTP
- 28. 互聯網連接並檢查它
- 29. 不斷檢查互聯網連接
- 30. Xamarin檢查互聯網連接
我認爲服務可以幫助你。 –