2012-07-13 68 views
0

所以我有2個藍牙GATT服務器對象的同一類。 他們每個人都有一個IntentFilter和BroadcastReceiver。 當對象從藍牙服務器接收數據時,它在BroadcastReceiver中執行特定的功能。Android BroadcastReceiver執行兩次以上

不幸的是,如果我發送兩個請求(每個對象一個),響應執行四次。 據我瞭解,由於第一個請求的響應在兩個對象的BroadcastReceiver中執行,然後再次響應來自第二個對象請求在兩個對象中執行。

如何指定BroadcastReceiver僅在請求來自的對象中執行代碼?

+0

用一些代碼片段改進你的問題。這對幫助你會更好。 – yugidroid 2012-07-13 17:18:56

+0

沒有太多的代碼。就像我說的。 2個對象 - 每個對象都有過濾器和接收器。而已。 – SharkyLV 2012-07-13 17:27:07

+0

我得到了與BT相同的事情,它斷開連接,我收到兩個通知。 – JPM 2012-07-23 19:15:11

回答

0

如果對sendBroadcast()BroadcastReceiver的呼叫都在同一個對象內部,我不得不懷疑是否使用廣播真的是一個好方法(但沒有代碼,這是一個假設)。

但要直接回答您的問題,您必須使用Intent的可過濾參數之一來區分這兩者。例如,如果它們具有相同的操作,請在數據字段中設置不同的Uri,或者爲每個對象指定不同的MIME類型參數。然後,當您用IntentFilter註冊接收器時,將這些特定參數從對象應用到過濾器。