2012-04-04 56 views
16

說明:意圖啓動活動 - 但不要帶來正面

  • 活動一個可見(或後臺)
  • 意向是有價值的額外廣播接收然後將附加項傳遞給將用於啓動活動的新Intent I2A
  • 結果:如果活動在後臺,請勿將活動帶到前面

代碼:

Intent I2= new Intent(context, MyActivity.class); 
I2.putExtra(.. 
I2.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); // | Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(I2); 

注:我沒有加入「機器人:taskAffinity」體現..我想你應該知道

+2

爲什麼你想開始活動,當你不希望它在前臺,..?你想要做什麼..? – ngesh 2012-04-04 10:02:07

+0

所以我更新了它:不要把前面的活動帶到後臺! – pulancheck1988 2012-04-04 10:44:11

+0

不要爲此使用FLAG_ACTIVITY_MULTIPLE_TASK!如果你最終開始多個任務,你將很難管理它們。這是一堆你不想打開的蠕蟲! – 2016-06-13 18:42:54

回答

7

如果你希望你的活動是在後臺添加此行在活動的OnCreate

moveTaskToBack(true); 
+0

雖然它顯示了一秒的活動。 – zgulser 2016-01-14 11:51:12

4

您可以在onCreate()方法使用這行:

moveTaskToBack(true); 
+0

你能告訴我怎樣才能重新啓動活動之後調用'moveTaskToBack(true);' 我使用了'Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REANGUER_TO_FRONT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK'但不重新啓動活動它使新的..注意**多次實例相同的活動 – medo 2016-07-28 10:02:06

2

您不想在後臺啓動Activity。有更好的方法來做你想做的事。例如,您可以讓您的Activity寄存器接收廣播Intent。即使它在後臺,它也會接到onReceive()的呼叫。您可以通過在onPause()中將變量設置爲true並將其設置爲onResume()中的false來確定您的Activity是否在後臺。然後在onReceive()中,如果變量爲true,則表示您處於後臺。