是否有与在应用程序运行检查互联网连接下面的场景共同的任何后台任务?
解析1.启动/从服务器提取数据
从服务器2.In解析之间/取
任何示例代码或链接帮助了我很多。
是否有与在应用程序运行检查互联网连接下面的场景共同的任何后台任务?
解析1.启动/从服务器提取数据
从服务器2.In解析之间/取
任何示例代码或链接帮助了我很多。
您可以启动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" />
您可以使用服务两者的任务。
对于第一个,调用服务,当下载将开始。
在被该检查活动的互联网连接了一段时间后执行的服务使用一个线程。
编辑-
这可能是这样的,
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();
看看这个帖子也。
此外,我发现了其他两个选项,
看看计时器任务和报警管理也来检查过了一段时间的互联网连接。
您可以使用下面的工具类请确保为Internet权限清单中。
让我知道如果任何问题。
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;
}