是否有任何後臺任務在應用程序中運行以檢查以下情況下的互聯網連接是否常見?在Android中檢查互聯網連接
解析1.啓動/從服務器
2.In解析之間/從服務器
任何示例代碼或鏈接獲取獲取數據幫助了我很多。
是否有任何後臺任務在應用程序中運行以檢查以下情況下的互聯網連接是否常見?在Android中檢查互聯網連接
解析1.啓動/從服務器
2.In解析之間/從服務器
任何示例代碼或鏈接獲取獲取數據幫助了我很多。
您可以對這兩項任務使用服務。
第一個,調用服務,當下載要開始時。
使用一段時間後執行的服務中的線程來檢查活動的Internet連接。
編輯 -
這可能是這樣的,
Thread thread = new Thread()
{
@Override
public void run() {
try {
while(true) {
sleep(1000);
Toast.makeText(getBaseContext(), "Running Thread...", Toast.LENGTH_LONG).show();
// Check internet connectivity here
}
} catch (InterruptedException e) {
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show();
}
}
};
thread.start();
看一看這個post也。
我也發現了其他兩個選項,
看一看計時器任務和報警管理也來檢查過了一段時間的互聯網連接。
可以啓動IntentService
或Service
並使用此:
public boolean CheckInternet()
{
ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
android.net.NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
android.net.NetworkInfo mobile = connec.getNetworkInfo(ConnectivityManager.
if (wifi.isConnected()) {
return true;
} else if (mobile.isConnected()) {
return true;
}
return false;
}
而且不要忘了這個權限添加到AndroidManifest
文件:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
您可以使用下面的工具類 確保在清單中提供互聯網許可。
讓我知道是否有問題。
private static NetworkUtil mInstance;
private volatile boolean mIsOnline;
private NetworkUtil() {
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
boolean reachable = false;
try {
Process process = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com");
int returnVal = process.waitFor();
reachable = (returnVal==0);
} catch (Exception e) {
e.printStackTrace();
}
mIsOnline = reachable;
}
}, 0, 5, TimeUnit.SECONDS);
}
public static NetworkUtil getInstance() {
if (mInstance == null) {
synchronized (NetworkUtil.class) {
if (mInstance == null) {
mInstance = new NetworkUtil();
}
}
}
return mInstance;
}
public boolean isOnline() {
return mIsOnline;
}
* Service ..... *? –
是的,這是最適合像服務或可能是接收器我有代碼,將只適用於第一種情況 – Manju