Android检查无上下文连接

Android检查无上下文连接,android,connection,Android,Connection,我想知道是否可以在没有上下文的情况下检查android中的连接,因为我在后台运行的线程不知道上下文。 如果没有办法,那么将最佳实践传递到线程上下文中吗 谢谢是的,您需要上下文。您的线程可能已经有权访问上下文,这得益于可运行作为分支线程的活动或服务的内部类使用。您的可运行对象将在活动或服务内运行,因此它将有权访问其方法 我认为你可以简单地做到: OuterClassName.this.getContext(); 您可以使用下面的方法 Kotlin: fun isNetworkAvailable1

我想知道是否可以在没有上下文的情况下检查android中的连接,因为我在后台运行的线程不知道上下文。 如果没有办法,那么将最佳实践传递到线程上下文中吗


谢谢

是的,您需要
上下文
。您的线程可能已经有权访问
上下文
,这得益于
可运行
作为分支线程的
活动
服务
的内部类使用。

您的可运行对象将在活动或服务内运行,因此它将有权访问其方法

我认为你可以简单地做到:

OuterClassName.this.getContext();

您可以使用下面的方法

Kotlin:

fun isNetworkAvailable1(): Boolean {
        val runtime = Runtime.getRuntime()
        try {
            val ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8")
            val exitValue = ipProcess.waitFor()
            return exitValue == 0
        } catch (e: IOException) {
            e.printStackTrace()
        } catch (e: InterruptedException) {
            e.printStackTrace()
        }
        return false
    }
public static boolean isNetworkAvailable () {
    Runtime runtime = Runtime.getRuntime();
    try {
        Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
        int     exitValue = ipProcess.waitFor();
        return (exitValue == 0);
    } catch (IOException e){
          e.printStackTrace();
    } catch (InterruptedException e){
          e.printStackTrace();
    }
    return false;
}
Java:

fun isNetworkAvailable1(): Boolean {
        val runtime = Runtime.getRuntime()
        try {
            val ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8")
            val exitValue = ipProcess.waitFor()
            return exitValue == 0
        } catch (e: IOException) {
            e.printStackTrace()
        } catch (e: InterruptedException) {
            e.printStackTrace()
        }
        return false
    }
public static boolean isNetworkAvailable () {
    Runtime runtime = Runtime.getRuntime();
    try {
        Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
        int     exitValue = ipProcess.waitFor();
        return (exitValue == 0);
    } catch (IOException e){
          e.printStackTrace();
    } catch (InterruptedException e){
          e.printStackTrace();
    }
    return false;
}

你说的连接是什么意思?如果我有wifi或3g连接。我知道我必须使用ConnectivityManager类,但问题是如果需要上下文,我需要检查对象runnable的连接,我不知道线程是什么。否,因为runnable对象是在其他java文件中定义的,它不是一个内部类