在将文件推送到数据库之前,我需要使用代码来检查我是否可以访问互联网。 这是我正在使用的代码。如果我有互联网连接,它工作正常,但如果没有,它会卡住大约 6 或 7 秒
public static boolean isInternetReachable() throws InterruptedException, IOException {
Process p1 = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com");
int returnVal = p1.waitFor();
return (returnVal==0);
}
我希望它将文件逐个文件推送到数据库,并且我想每次都检查互联网是否正常工作
最佳答案
要检查用户是否连接到互联网,请使用它。
public boolean hasInternetConnection() {
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return manager.getActiveNetworkInfo() != null && manager.getActiveNetworkInfo().isConnected();
}
您的屏幕卡住是因为您正在主线程上执行长时间运行的任务(上传文件),这可能会导致您的应用程序无法响应。您必须使用 AsyncTask、RxJava 或协程 (Kotlin) 将该操作移出主线程。 See this
关于java - 屏幕卡住直到函数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54889059/