2011-03-07 58 views
0

我想始終啓動一項特定的活動,而不是在關閉應用程序時激活的活動。我沒有可能在關閉前切換到理想的活動,因爲它可能已經死了。最近應用程序的快捷方式始終啓動應用程序的最新活動。如何改變?

我寧願甚至從最近的應用程序中刪除整個程序的快捷方式,而不是讓用戶因啓動信用而不是啓動閃屏而感到困惑。然而,這只是解決方法(但以防萬一,如何才能做到這一點?)

回答

1

如果你的意思是你想通過相同的活動,每次來啓動應用程序,添加

android:launchMode="singleTask" 

到您的主要活動清單文件。這將迫使你的應用程序把這個活動放在活動堆棧的底部,清除可能已經運行的所有其他活動。

+0

這是錯誤的。將這種特殊的啓動模式添加到主「活動」中並不會達到OP的目標。它不會清除堆棧中的其他活動。我不知道這是如何被接受爲正確的答案。 – 2016-08-05 11:05:30

1

你可以做到這一點的一種方法是標記所有活動與android:excludeFromRecents="true"屬性。這可確保您的任何活動都不會顯示在「最近的應用程序」列表中。

您還應該查看android:finishOnTaskLaunchandroid:stateNotNeeded屬性。

+0

如果您用'excludeFromRecents ='標記您的主'Activity' 「true」,那麼用戶不會在最近的任務列表中找到任務,並且如果他離開(通過按HOME鍵或接聽來電等),將無法返回任務。不需要用這個屬性標記所有**活動,只需要主(根)活動 足夠。 – 2016-08-05 11:08:34

+0

此答案將阻止應用程序在最近的任務列表中顯示出來。這可能不是OP想要的。不僅如此,如果應用程序有2個活動打開並且用戶按下HOME按鈕,然後返回到應用程序(不是通過從最近的任務列表中選擇它,而是通過再次按下HOME畫面上的應用程序圖標),然後它會返回到應用程序的第二個「活動」在頂部,這也不是OP想要的。 – 2016-08-05 11:27:21

2

我反編譯的一些應用程序,並找到了自己的解決方案:

<android:name="..." 
     android:taskAffinity=":shortcut" 
     android:excludeFromRecents="true" 
     android:clearTaskOnLaunch="true" 
     ... 

關於android:taskAffinity

適用於所有活動的應用程序中,除了那些設置了不同的親和力與親和的名字他們自己的任務親和力屬性。查看該屬性以獲取更多信息。

默認情況下,應用程序內的所有活動共享相同的關聯。該關聯的名稱與<manifest>元素設置的包名稱相同。

0

解決這個正確的方法是

android:noHistory="true" 

添加到清單項中的所有活動除主(根)Activity

當用戶從最近的任務列表中返回到您的應用程序,或者通過按下HOME頁面上的應用程序圖標,所有活動(除主(根)Activity)將從任務中刪除,當用戶通過按HOME鍵離開應用程序,接聽來電,從通知欄中選擇另一個應用程序等時,它們會立即被移除。

相關問題