我正在尝试开发一个用于社交网络的Android应用程序。
它具有许多活动,片段适配器等等
我不想每次都从NetworkManager中检查互联网
我想要一种可以轻松便捷地实施网络故障案例的方法
我已经检查了如何使用Network Manger来获取网络状态,并且它是否已连接到Internet。
我还检查了广播接收器,它比网络管理器更有用,并且与我的想象接近。
有没有更好的方法来解决此问题。 还有我们该如何处理连接速度慢的问题。
谢谢
答案 0 :(得分:0)
您应该在后台线程中处理网络进程。有一些选项:
异步任务:https://developer.android.com/reference/android/os/AsyncTask
或者您可以使用RxJava,但是有点困难
答案 1 :(得分:0)
如果使用OkHttpClient,则可以使用拦截器。
使用抛出NoInternetException的拦截器,像这样定义http客户端
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.connectTimeout(HTTP_CLIENT_TIMEOUT, TimeUnit.SECONDS);
httpClient.readTimeout(HTTP_CLIENT_TIMEOUT, TimeUnit.SECONDS);
httpClient.writeTimeout(HTTP_CLIENT_TIMEOUT, TimeUnit.SECONDS);
httpClient.addInterceptor(new Interceptor() {
@Override
public okhttp3.Response intercept (@NonNull Chain chain) throws
NoInternetException, InterceptorException
{
if (!Util.isNetworkAvailable(mContext)) {
throw new NoInternetException();
}
}
});
使用此帮助器功能,您可以检测网络是否可用:
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivityManager
= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = null;
if (connectivityManager != null) {
activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
}
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
让我知道这是否有帮助;)