可以收到广播后cancel之前的任务,delay执行当前任务。

解决方案 »

  1.   

    ConnectivityManager.TYPE_WIFI 可以直接判断网络类型  剩下的你懂的  
      

  2.   

      求代码啊!!!怎么cancel之前的任务啊!!!!
      

  3.   

    我知道可以。。但是你看清楚我的需求啊!  因为每次网络变化都会接收到这个广播!3G切换到wifi的时候。有三个广播发出来的。第一个是wifi连接。第二个是3G关闭。第三个是wifi连接所以在这里处理的时候,会处理了三次!!!你在红字处system.out.println就知道会打印出三条信息了!!!
      

  4.   

     我想在3G网络切换到WIFI网络的时候,提醒一下用户Toast。但是这样的话,会提醒了三下!!!明白了没?帮帮忙啊!!!
      

  5.   

    收到广播之后你要干嘛呀?
    之前处理过,用handler,SendMessage,填写delay的参数。发送出去msg。
    第二次收到之后先cancel刚发出去的msg,再发送当前的。
    这样在比较短的时间内,连续多个广播时只执行最后一次广播。
    只是一种解决办法。
      

  6.   

    你为什么不设置一个全局的静态变量,开始为true,提醒之前先判断该变量,如果为true就提醒,然后改为false。
    这样既简单又方便啊
      

  7.   

    不行啊,这个flag设置不回初始值了,那样的话如果wifi切换回3G的话,那就没提醒了啊!
      

  8.   


    你可以在每一次状态切换后将flag置为初始值不就可以了吗!
      

  9.   

    NetworkInfo netInfo = (NetworkInfo) b.get(ConnectivityManager.EXTRA_NETWORK_INFO);
    NetworkInfo.State state = netInfo.getState();
    ConnectivityManager connectivityManager = (ConnectivityManager) context
                         .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();

    if ((state == NetworkInfo.State.CONNECTED) && (activeNetInfo != null) && (activeNetInfo.getType() != netInfo.getType())) {return;}
    activeNetInfo.getType() != netInfo.getType()
      

  10.   

    Bundle b = intent.getExtras();
      

  11.   

    if ((state == NetworkInfo.State.CONNECTED)
    && (activeNetInfo != null)
    && (activeNetInfo.getType() != netInfo.getType())) {这个判断好像不起作用耶!!!第二第三个广播都没跑进这里!
      

  12.   

    得到actual_的帮助,现在结帖!!!利用activeNetInfo.getType()和netInfo.getType()的比较!观察3G跟wifi的切换。wifi跟3G的切换。判断每种情况!!!其实情况就几种!!!
      

  13.   

    既然明确的知道他走三次 那就弄一个简单的判断就好了吧
    private int i = 0;(全局的)if(有网){
         i++;
         if(i%3 == 0){
               Toast............................
         }
    }