【问题标题】:multiple actions for broadcast receiver in androidandroid中广播接收器的多个动作
【发布时间】:2013-12-27 22:42:41
【问题描述】:

我已经在清单文件中注册了一个广播接收器以更改连接性。只要网络发生变化,它就可以正常工作,onReceive() 被调用。但是当我启动我的应用程序并且有互联网时;因为网络没有变化;接收器没有被调用。我希望在首次启动应用时调用此接收器..

我的想法是向BroadcastReceievr 添加更多操作,这是个好主意吗?并且每当调用连接更改操作时,我都想取消注册启动器操作意图..

我能做什么?

【问题讨论】:

    标签: android broadcastreceiver intentfilter


    【解决方案1】:

    您可以像这样添加多个过滤器:

        IntentFilter inf = new IntentFilter();
        inf.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        inf.addAction("app_launch");
    
        registerReceiver(receiver, inf);
    

    当您在 onCreate 中启动应用时,您可以发送广播

        Intent intent = new Intent();
        intent.setAction("app_launch");
        sendBroadcast(intent); 
    

    【讨论】:

    • 但是当网络发生变化时,会有两个接收者监听两个不同的意图..一旦调用网络更改操作,我想取消注册 app_launch 操作..我遇到了麻烦
    • 不会有一个接收器监听两个动作,每次广播 app_launch 和网络变化时都会调用它
    • 我已经从广播接收器启动了警报管理器。但是在这种情况下,当我销毁活动时,我将不得不取消注册接收器。
    • 您实际上可以在 sharedpreferences "isFirstLaunch" 中保留一个布尔值,在广播 app_launch 之前,只需检查它是否设置为 true 并将其设置为 false,这样您只会广播 app_launch 一次。
    • 也无需取消注册您的接收器,因为现在它只会在连接更改时调用
    猜你喜欢
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多