ToMadison 2015-08-19 07:15 采纳率: 0%
浏览 1430

关于安卓的广播一些问题

最近在搞一个搜索wifi的demo。是这样的,通过广播来判断wifi是否成功连上的,连上与连不上我都会做相应的处理;但是有一个问题,当我第一次成功连上后,第二次我连接别的wifi,而且故意输错密码,这时候广播会执行我做的连不上wifi的相对应处理,但是当我第三次连错wifi的时候,这时候广播就没有执行了。这是一个什么原因,我怎么才能够让广播实时做出处理,或者有更好的解决方法????

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 06:03
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是因为Android的广播机制设计的原因。当你的广播发送器(比如BroadcastReceiver)接收到一个广播时,它首先检查这个广播是否来自你正在监听的那个组件。如果你刚刚启动了一个新的Activity,那么它不会立即响应你的广播。

    为了使广播能够即时反应,你需要确保你在创建广播接收器时就监听到了你想要监听的组件。例如:

    IntentFilter filter = new IntentFilter();
    filter.addAction(MyBroadcastReceiver.ACTION_WIFI_CONNECTED);
    filter.addAction(MyBroadcastReceiver.ACTION_WIFI_DISCONNECTED);
    
    startService(new Intent(this, MyBroadcastReceiver.class));
    

    在这个例子中,MyBroadcastReceiver类的ACTION_WIFI_CONNECTEDACTION_WIFI_DISCONNECTED动作被添加到IntentFilter对象中,并且它们被添加到我们的服务中去监听。

    此外,如果可能的话,你可以考虑使用PendingIntent来处理这些广播,这样你可以在任何时候都处理这些广播。例如:

    PendingIntent pendingIntent =
            PendingIntent.getBroadcast(
                    this,
                    0,
                    new Intent(),
                    PendingIntent.FLAG_UPDATE_CURRENT);
    
    // 发送广播
    sendBroadcast(pendingIntent);
    
    // 在这里处理广播
    

    这将使得广播能够在任何时刻被处理,而不仅仅是当你启动一个新的Activity时。

    评论

报告相同问题?

悬赏问题

  • ¥15 手机文件管理器导入视频到相册导致日期和分类错乱。
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法