Android 检测到internet连接时下载数据
只要互联网连接可用,我想下载一些数据,包括json和图像(二进制数据) 我有一个完整的工作代码可以做到这一点。问题是我已经在自定义应用程序类中编写了该代码。下载并在本地保存。但当应用程序启动时,互联网连接可能在该时间点不可用 所以我想做的是在检测到internet连接时发送请求并下载数据,并通过将数据保存在本地内容提供商中来使用这些数据。即使没有互联网连接,该应用程序也能正常工作 我正在考虑使用广播接收器下载同样的内容。但是,对于广播接收器来说,下载数据将是一项繁重的任务。所以现在我发现我可以在广播接收器中检查互联网连接,我将从其他组件下载数据。这样做的最佳实践是什么 即使应用程序未打开,广播接收器是否仍在附近 这样做的最佳实践是什么 最好的方法是使用 从您的广播接收器启动此服务。通过,所有请求都在一个工作线程上处理——它们可能需要花费必要的时间(并且不会阻塞应用程序的主循环),因此不必担心任务需要多长时间 即使应用程序未打开,广播接收器是否仍在附近 是的,如果他们是通过舱单注册的Android 检测到internet连接时下载数据,android,broadcastreceiver,download,Android,Broadcastreceiver,Download,只要互联网连接可用,我想下载一些数据,包括json和图像(二进制数据) 我有一个完整的工作代码可以做到这一点。问题是我已经在自定义应用程序类中编写了该代码。下载并在本地保存。但当应用程序启动时,互联网连接可能在该时间点不可用 所以我想做的是在检测到internet连接时发送请求并下载数据,并通过将数据保存在本地内容提供商中来使用这些数据。即使没有互联网连接,该应用程序也能正常工作 我正在考虑使用广播接收器下载同样的内容。但是,对于广播接收器来说,下载数据将是一项繁重的任务。所以现在我发现我可以在
有用的资源包括 这样做的最佳实践是什么 最好的方法是使用 从您的广播接收器启动此服务。通过,所有请求都在一个工作线程上处理——它们可能需要花费必要的时间(并且不会阻塞应用程序的主循环),因此不必担心任务需要多长时间 即使应用程序未打开,广播接收器是否仍在附近 是的,如果他们是通过舱单注册的
有用的资源包括
在android开发者指南中提到,您可以 第一个-您创建了一个NetworkChangeReceiver类,该类是BroadCastReceive,您可以在其中实现代码以下载所需内容:
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo wifi = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo activeNetwork = connMgr.getActiveNetworkInfo();
boolean isConnected = wifi != null &&
wifi.isConnected() ;
if (isConnected ) {
// Do something
Log.d("Netowk Available ", "Flag No 1");
}
}
}
第二个-您在清单文件中注册您的BroadCastReceiver
,如下所示:
<receiver android:name=".NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
在android开发者指南中提到,您可以 第一个-您创建了一个NetworkChangeReceiver类,该类是BroadCastReceive,您可以在其中实现代码以下载所需内容:
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
final ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo wifi = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo activeNetwork = connMgr.getActiveNetworkInfo();
boolean isConnected = wifi != null &&
wifi.isConnected() ;
if (isConnected ) {
// Do something
Log.d("Netowk Available ", "Flag No 1");
}
}
}
第二个-您在清单文件中注册您的BroadCastReceiver
,如下所示:
<receiver android:name=".NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
我应该使用哪个权限?我应该使用哪个权限?