2010-05-17 128 views
3

我正在嘗試製作任務切換器,並且我成功完成了該任務。我唯一的問題是,當我開展活動時,它們會重新啓動,因爲它們都是新活動(例如,我正在寫一封電子郵件,然後按回家並進入我的活動,啓動電子郵件,然後應用程序啓動電子郵件回合返回收件箱和電子郵件丟失)所以這不是真正的多任務處理。在當前狀態下啓動活動

這裏是我的步驟:

1)讓所有正在運行的應用程序:

List<ActivityManager.RunningTaskInfo> allTasks = activityManager.getRunningTasks(30);

2)獲得的意圖:

for (ActivityManager.RunningTaskInfo aTask : allTasks) { 
     Intent i = new Intent(Intent.ACTION_MAIN); 
     i.setComponent(aTask.baseActivity); 
(...) 

3)啓動應用程序,當點擊在按鈕上:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED).addCategory(Intent.CATEGORY_LAUNCHER); 
    monthis.startActivity(intent); 

`

這段代碼有什麼問題?我應該做一些不同的事情來得到它嗎?

非常感謝您的回答。

回答

3

創建意圖時,您不應使用Intent.FLAG_ACTIVITY_NEW_TASK,您應該使用FLAG_ACTIVITY_REORDER_TO_FRONT。

+0

非常感謝。 您認爲:FLAG_ACTIVITY_RESET_TASK_IF_NEEDED是個好主意嗎? 該文檔說: 如果已設置,並且此活動要麼在新任務中啓動,要麼將現有任務置頂,則將作爲任務的前門啓動。 在你的頭腦中添加這樣的標誌是一個好主意嗎? – 2010-05-18 09:32:48

0

對不起,如果我在我的解釋中犯了錯誤,我是一個「noob」,只是在這裏告訴我的經驗,以改善人們尋找相同答案的結果。

事實上,我不得不使用intent.setFlag(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_REORDER_TO_FRONT)來獲得最佳結果。更換不是最好的主意。

當我想要啓動我自己的應用程序時,不使用FLAG_ACTIVITY_NEW_TASK使電子郵件應用程序啓動。因爲電子郵件與我的應用程序相同的任務「鏈接」。

但盧卡斯,我保持你的答案是最好的。

0

我想我找到了答案。讓我告訴我做了什麼簡單的話,

假設我有兩個活動activity1和activity2,我從activity1導航到activity2(我在activity2中做了一些工作),然後再次通過單擊返回到activity 1 activity1中的一個按鈕。現在在這個階段,我想回到活動2,並且我想在我最後離開activity2時看到我的activity2處於相同的狀態。

對於上述方案我所做的是,在清單中我做了一些改變這樣的:

<activity android:name=".activity2" 
      android:alwaysRetainTaskState="True" 
      android:launchMode="singleInstance"> 
</activity> 

並在按鈕點擊事件的活性1我已經做過這樣的:

Intent intent=new Intent(); 
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
intent.setClassName(this,"com.mainscreen.activity2"); 
startActivity(intent); 

並在按鈕的單擊事件活性2我有這樣做:

Intent intent=new Intent(); 
intent.setClassName(this,"com.mainscreen.activity1"); 
startActivity(intent); 

現在會有什麼HAPP因爲無論我們在activity2中所做的更改都不會丟失,並且我們可以以與之前離開相同的狀態查看activity2。

我相信這是答案,這對我來說很好。糾正我,如果我錯了。

+0

@Jaco Briers:先生,我發佈了這個答案,因爲我教過這個答案會幫助那些可能面臨類似問題的人,我不認爲這是一個很大的錯誤。我可能不是這方面的專家,但我分享了我發現的內容。就這樣。 – 2012-02-17 17:55:15

相關問題