屏幕冻结直到函数返回

问题描述 投票:0回答:2

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

我希望它将文件 - 逐个文件 - 推送到数据库,我想检查互联网是否每次都在工作

java android freeze
2个回答
2
投票

要检查用户是否已连接到互联网,请使用此功能。

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

您的屏幕冻结是因为您在主线程上执行了长时间运行的任务(上传文件),这可能导致您的应用无法响应。您必须通过使用AsyncTask,RxJava或Coroutines(Kotlin)将该操作从主线程移开。 See this


-1
投票
 Handler hander = new Handler(this);
 handler.postDelayed(new Runnable() {
        @Override
        public void run() {
        //do what you want
  },2000L);
© www.soinside.com 2019 - 2024. All rights reserved.