2014-01-20 46 views
4

我已閱讀http://developer.android.com/guide/components/tasks-and-back-stack.html,我查閱了FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET的文檔,但我仍不明白爲什麼Google的員工決定將其納入有關分享的博客文章。共享時「FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET」的用途是什麼?

http://android-developers.blogspot.com/2012/02/share-with-intents.html

這裏是他們的代碼片段正是:

Intent intent=new Intent(android.content.Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 

// Add data to the intent, the receiving app will decide what to do with it. 
intent.putExtra(Intent.EXTRA_SUBJECT, 「Some Subject Line」); 
intent.putExtra(Intent.EXTRA_TEXT, 「Body of the message, woot!」); 

文檔說:

If set, this marks a point in the task's activity stack that should be cleared when the task is reset... 

我還是很不清楚這個標記。我不確定我能否想到將它包含在我的share()方法中的原因,但是如果Google在博客文章中使用它,那麼我相信他們知道這會發揮作用的場景。提前致謝。

+0

一個用例是[本文檔]中說明的(http://developer.android.com/training/implementing-navigation/descendant.html#external-activities)。 –

+2

此標誌現在已被棄用,因爲它與「Intent.FLAG_ACTIVITY_NEW_DOCUMENT」相同。 –

+0

@EGHDK請將此問題標記爲已回答,以幫助其他具有相同問題的人員。 –

回答

9

的文章解釋了它的第一個代碼示例中:

此標誌將清除活動堆棧的名爲app,讓用戶 在這個應用程序重新啓動的預期發生下一次到達。

如果你離開了標誌,返回時您的應用程序(從主屏幕,從最近通話等),你會看到的份額目標(短信/郵件/ IM應用程序),而不是您的Activity。嘗試一下,你會看到不同之處。

+0

哦!這就說得通了。感謝您的解釋。 – EGHDK

3

enter image description here

這個標誌標誌着所謂活動,並把在它上面的所有活動被清除(從堆棧中移除)當任務被重置。只要任務通過FLAG_ACTIVITY_RESET_TASK_IF_NEEDED進入前臺就執行此重置,當用戶從主屏幕,主菜單或最近啓動的活動列表恢復任務時,系統會始終設置該值。

您可以使用它來定義任務堆棧中的一個點,一旦任務發送到後臺,所有已啓動的活動應該被「忘記」。

MORE:SEE HERE