2015-12-02 180 views
1

我在onCreate中註冊了接收者,但onReceive有時會被調用,有時候不會。onReceive in BroadcastReceiver有時不會被調用

public class MyReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.v("receiver","get called"); 

    } 
} 

這裏是我在的onCreate登記接收

PROCESS_RESPONSE = getBaseContext().getResources().getString(R.string.serviceResponse); 
IntentFilter filter = new IntentFilter(PROCESS_RESPONSE); 
filter.addCategory(Intent.CATEGORY_DEFAULT); 
receiver = new MyReceiver(); 
registerReceiver(receiver, filter); 

這裏是我發送廣播消息:

Intent broadcastIntent = new Intent(); 
PROCESS_RESPONSE=getBaseContext().getResources().getString(R.string.serviceResponse); 
broadcastIntent.setAction(PROCESS_RESPONSE); 
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT); 
sendBroadcast(broadcastIntent); 
+0

鏈接代碼爲接收器如何播出(你怎麼發送信號到接收器?) –

+0

你如何註冊你的接收器 –

+0

找到原因,這是因爲我發送的數據使廣播失敗 – Mengli

回答

0

試試這個:

broadcastIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 

的原因,有時工作和不工作是

因爲Android 3.0引入了啓動控制安全措施,可以防止已停止應用程序的組件通過意圖啓動。如果應用程序剛安裝完成並且以前沒有啓動,或者用戶使用設備上的應用程序管理器手動停止,則認爲應用程序處於停止狀態。然而,爲了解決這個問題,一個標誌可以在發送之前被添加到意圖中,以表明意圖被允許啓動停止的應用程序的組件。

Quote source

所以,當你嘗試全新安裝(從IDE啓動)的應用在了一會兒停止狀態考慮,再後來是沒有的。因此,當您嘗試播出時,它有時不起作用。讓我知道這是否有效,當然,確保你已經註冊了BroadcastReciever(至少在某些時候,如果它有效,我相信你會有的)。

+0

添加標誌並嘗試全新安裝,但onReceive仍然沒有被調用。 – Mengli

相關問題