处理丢失的Internet连接Android从服务器获取数据时

时间:2014-03-25 09:24:48

标签: android performance android-asynctask broadcastreceiver

我非常感兴趣知道处理以下场景的程序,如果能够完成,我相信它会对很多开发人员的工作有所帮助: -

场景:假设我在启动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();
        }
    }
}

但是,无法在我的场景中使用它,可能会有大量的asynctasks在不同的活动中工作。

请建议或给我简单的方法来解决或克服这些类型的问题。

由于

1 个答案:

答案 0 :(得分:0)

没有办法只在一个地方处理它。因为如果您想通知所有活动,那么您也将使用广播接收器。因此,解决方案是在doInBackGround方法中注册广播接收器,并在onPostExecuteMethod中取消注册。