2013-12-11 33 views
6

我的應用程序在後臺運行,在某個時間點顯示活動以有目的地中斷用戶的流動。我的活動啓動了一項新任務,其中出現在「近期任務」列表中,同時處於前景中。有什麼辦法可以預防嗎?設置android:excludeFromRecents不起作用 - 活動僅在「暫停」後才顯示在「近期任務」中。從最近的任務中排除當前活動

清單看起來像:

<activity 
    android:name="com.example.recenttasks.MainActivity" 
    android:excludeFromRecents="true"> 
</activity> 

和活動開始時是這樣的:

@Override 
public void onReceive(Context context, Intent intent) { 
    Intent i = new Intent(context, MainActivity.class); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(i); 
} 

回答

2
你定義它明顯是足夠的,但它不來

..

OK ..try將此標誌也添加到您的Intnet並啓動活動..

intnet.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
+0

對不起,沒有幫助。 – lstipakov

2

你所提到的關鍵是

而在前臺

是出現在「近期任務」列表中,我認爲你不能改變這種行爲。我剛剛測試了我的應用程序,併發生同樣的事情。如果我在前臺進行活動時按下「最近的任務」按鈕,則會顯示在此處。當我將其移出到其他活動或手機的主屏幕時,該活動不再列出。

我還在最近的Android版本附帶的內置DeskClock應用程序上測試了這一點,並且在觸發新警報時存在相同的行爲。請注意,該應用的AlarmAlertFullscreen活動與您在問題中提到的參數相同。

我不確定你可以繞過這個問題,或者你爲什麼需要首先考慮,因爲一旦失去焦點,活動就不再列出來。

+0

我試圖模擬UsbDebuggingActivity的行爲,當您第一次通過adb連接它時,它會在4.x設備上彈出。看起來,當「最近的應用」彈出時,活動會自行破壞(儘管目前我無法從代碼中看到它)http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android /android/4.2_r1/com/android/systemui/usb/UsbDebuggingActivity.java/#UsbDebuggingActivity) – lstipakov

+1

好的,它在manifest中使用'finishOnCloseSystemDialogs = true'。我應該也可以這樣做。 – lstipakov

+0

@Stipa回來更新我們。 :) –

0

使用下面的代碼,然後您的MainActivity不會出現在近期任務中。

Intent i = new Intent(context, MainActivity.class); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
i.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
context.startActivity(i); 
相關問題