【问题标题】:Broadcast receiver is triggered automatically on start广播接收器在启动时自动触发
【发布时间】:2012-09-19 07:15:07
【问题描述】:

我在主要活动中注册了BroadcastReceiver。 Activity 在其中一个选项卡中发送一个粘性以触发广播接收器(TabActivity 应用程序)。

一切正常,但是当我重新启动应用程序时,粘性会自动发送(不是由用户触发)并打开视图。

我的问题是:这怎么可能?我是不是误会了什么?我该如何解决这个问题?

主要活动: 创建时:

    registerReceiver(openOutgoingCall, new IntentFilter("OPENOUTGOINGCALL"));

广播接收者:

private BroadcastReceiver openOutgoingCall = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

            Bundle extras = intent.getExtras();
            if(extras.isEmpty() == false) {
                HashMap<String,String> callData = (HashMap<String, String>) extras.get("callData");
                openOutgoingCall(callData); 
            }

        }
    };

TabHost 内的活动

public void openCall(View view) {
    Intent i = new Intent("OPENOUTGOINGCALL");
    i.putExtra("callData", detailInfo);
    sendStickyBroadcast(i);    
}

【问题讨论】:

    标签: android broadcastreceiver


    【解决方案1】:

    粘性广播应该保留(即使它们被接收),以便之后也可以检索它们。也许您应该尝试使用以下简单的广播方式:

    sendBroadcast(i);
    

    阅读this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多