我很有兴趣知道处理以下场景的过程,如果可以做到,我相信它会帮助很多开发人员的工作:-
场景:假设我在启动Asynctask之前检查Internet连接的可用性,并且它是可用的。现在假设在3秒后连接丢失,或者只是你可以说我已经关闭了互联网,那么我们应该做什么来立即处理它 ?
我刚刚注册了一个广播接收器来处理网络连接:-
public class HotspotConnectionChecker extends BroadcastReceiver {
Context context;
SharedPreferences loginPref;
SharedPreferences.Editor prefEditor;
String username,password;
boolean isLoggedIn;
//One Empty Constructor is required
public HotspotConnectionChecker() {
}
public HotspotConnectionChecker(Context context) {
this.context = context;
}
@Override
public void onReceive(final Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
NetworkInfo mobileNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if(activeNetInfo!=null){
Toast.makeText( context, "Connected", Toast.LENGTH_SHORT ).show();
}
else if(activeNetInfo==null){
Toast.makeText( context, "No/Bad Network Connectivity", Toast.LENGTH_SHORT ).show();
}
}
}
但是,无法在我的场景中使用它,可能有许多异步任务正在不同的活动中工作。
请建议或给我简单的方法来解决或克服这些类型的问题。
谢谢
没有办法只处理一个地方。因为如果你想通知所有的活动,那么你也会使用广播接收器。解决方案是在doInBackGround方法中注册一个广播接收器然后在onPostExecuteMethod中取消注册。