有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java屏幕冻结,直到函数返回

在将文件推送到数据库之前,我需要使用代码检查是否可以访问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);
}

我想让它把文件一个文件一个文件地推送到数据库,我想每次都检查一下互联网是否正常工作


共 (2) 个答案

  1. # 1 楼答案

     Handler hander = new Handler(this);
     handler.postDelayed(new Runnable() {
            @Override
            public void run() {
            //do what you want
      },2000L);
    
  2. # 2 楼答案

    要检查用户是否已连接到internet,请使用此选项

    public boolean hasInternetConnection() {
      ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
      return manager.getActiveNetworkInfo() != null && manager.getActiveNetworkInfo().isConnected();
    }
    

    您的屏幕冻结,因为您正在主线程上执行长时间运行的任务(上载文件),这可能导致您的应用程序没有响应。您必须使用AsyncTask、RxJava或协同程序(Kotlin)将该操作移出主线程。 See this