2014-04-29 50 views
1

所以我在我的android應用程序中有一個滑塊。當我將它移動到ON位置時,我將廣播兩個廣播發送到我的後臺應用程序。在android廣播接收器的競爭條件?

接收到的第一個廣播根據廣播中的鍵/值對創建/刪除文件。 接收的第二個廣播檢查文件是否存在。如果存在,它會執行一些代碼。我的廣播發送代碼是

Intent updateFile = new Intent();   
updateFile.setAction("com.example.makefile"); 
updateFile.putExtra("enable", create);   
sendBroadcast(updateFile); 

Intent startCode = new Intent();    
startMWC.setAction("com.m87.dev.start");  
sendBroadcast(startCode); 

我想知道是否有可能首先收到第二個廣播?和in一樣,在創建文件之前是否可以檢查文件是否存在?

我想過將第二個廣播轉移到第一個廣播的onReceive,但我並不總是希望它被執行,這就是爲什麼我這樣做。

回答

1

我想知道是否有可能首先收到第二個廣播?

是的,這是可能的,因爲sendBroadcast是異步的。

+0

在發送第二個廣播之前添加睡眠定時器是否是不好的做法?有沒有更好的方法來做到這一點? – AsadSMalik

+0

是的,這是一個不好的做法。我不確定,但也許我會按照你寫的那樣實現它 - 在第一個'BroadcastReceiver'的'onReceive()'中添加第二個'sendBroadcast()'。如果你不希望它每次被調用,你總是可以寫一個額外的檢查... – smb

+0

是的,謝謝。我修改它只有一個廣播接收器來檢查意圖是否攜帶添加了不同意圖的附加信息。 – AsadSMalik