java - 屏幕卡住直到函数返回

标签 java android freeze

在将文件推送到数据库之前,我需要使用代码来检查我是否可以访问互联网。 这是我正在使用的代码。如果我有互联网连接,它工作正常,但如果没有,它会卡住大约 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/

相关文章:

java - 列表<interfaceI> 与列表<?在 java 中扩展 InterfaceI>

java - 手机端实时接收服务器广播

java - 为什么liquibase :diff returning "A reference database must be provided to perform a diff"?

Windows 上的 c++ 程序 (g++)。 main() 没有启动

java - Liferay - 捕捉 Action 阶段以设置 'waiting' 光标

android - 应用程序无法安装 Android 9 (Pie)

android - 如何使默认相机应用程序在拍照后继续运行而不返回应用程序?

android - 在android中使用静态变量

forms - Powershell:While循环卡住形式

Java 日志记录线程阻塞