【问题标题】:Handling Lost Internet Connection Android While fetching the data from the server处理丢失的 Internet 连接 Android 从服务器获取数据时
【发布时间】:2014-05-03 00:50:14
【问题描述】:

我很想知道处理以下场景的过程,如果可以完成,我相信它将帮助很多开发人员的工作:-

场景:假设我只是在启动 Asynctask 之前检查 Internet 连接的可用性并且它是可用的。现在假设只要 3 秒后连接丢失,或者您可以说我已经关闭了 Internet,那么在这里应该怎么做才能立即处理

我刚刚注册了一个广播接收器来处理网络连接:-

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();
        }
    }
}

但是,由于无法在我的场景中使用它,可能有大量的异步任务在不同的活动中工作。

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

谢谢

【问题讨论】:

    标签: android performance android-asynctask broadcastreceiver


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 2014-11-06
      相关资源
      最近更新 更多