2014-03-30 247 views
0

我有一個使用「AlarmService」的應用程序。爲了處理報警,我有一個廣播接收器。接收器必須開始某種活動。我使用的代碼如下:廣播接收器啓動活動

@Override 
public void onReceive(Context context, Intent intent) { 
    ...other code.... 
    Intent intIntent = new Intent(context, MainActivity.class); 
    intIntent .putExtra("IsAlarm", true); 
    Intent alarmChooser = Intent.createChooser(intIntent , "Alarm"); 
    alarmChooser.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(alarmChooser); 
} 

這有效,但只有當活動不顯示已經(如果它不在前臺)。如果被調用的活動已經打開,則不會發生任何事我如何克服這一點? 有沒有一個標誌,如果它沒有開始或啓動活動,即使它在前臺發送意圖?

P.S.我嘗試使用提供的代碼上方的專用「廣播」。該廣播的接收者在MainActivity中以編程方式註冊:「onResume」將註冊專用接收者,「onPause」將註銷它。這樣的情況下MainActivity已經在它會收到廣播,但當我的手機進入「待命」 - 「專用」接收器未註冊時,我遇到了問題。

回答

0

檢查在活動onNewIntent回調 應該有來自接收器的新意圖

+0

我應該用機器人:launchMode =「singleTop」在這種情況下MainActivity? – guest86

+0

您可以設置在launchMode,也可以設置在意向「Intent.FLAG_ACTIVITY_SINGLE_TOP」 –

+0

不會做:(在任何情況下,該標誌「onNewIntent」完全不 – guest86

0

我覺得你並不需要選配:

@Override 
public void onReceive(Context context, Intent intent) { 
    Intent intIntent = new Intent(context, MainActivity.class); 
    intIntent.putExtra("IsAlarm", true); 
    context.startActivity(intIntent); 
}