在将文件推送到数据库之前,我需要使用代码来检查我是否可以访问Internet ..这是我正在使用的代码。如果我有互联网连接它可以正常工作,但如果没有它冻结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或Coroutines(Kotlin)将该操作从主线程移开。 See this
Handler hander = new Handler(this);
handler.postDelayed(new Runnable() {
@Override
public void run() {
//do what you want
},2000L);