2010年9月16日 星期四

activity - android:launchMode(3) - singleTask介紹

2 則留言:

  1. 請問使用singleTask跟在startActivity時設定為FLAG_ACTIVITY_CLEAR_TOP在效果上有什麼差異嗎?

    回覆刪除
  2. FLAG_ACTIVITY_CLEAR_TOP 在官方說法是If set, and the activity being launched is already running in the current task, then instead of launching a new instance of that activity, all of the other activities on top of it will be closed and this Intent will be delivered to the (now on top) old activity as a new Intent. 但是我的測試,其實他還是會產生一個實體new instance,這就和single Task是不同的。但是在有設置FLAG_ACTIVITY_CLEAR_TOP的Activity按Return Key往回跳的時候,會一口氣跳回到第一次startActivity這個Activity的Activity上。舉例:A1 -> A3 ->FLAG_ACTIVITY_CLEAR_TOP ->startActivity(A2) -> A1 -> A3 -> ->FLAG_ACTIVITY_CLEAR_TOP ->startActivity(A2) -> A1 -> A2,則當開始return key時,會是A2 -> A1 ->A2 -> A3 ->A1,當A2到A3,其實一口氣跳過了A3和A1。結論,除了會new instance之外還有一個比較麻煩的問題是,如果有很多不同的Activity會去呼叫一個想設FLAG_ACTIVITY_CLEAR_TOP的程式,那就要重覆寫很多次程式碼。但是可以如果是像網頁希望有各自實體的activity,又想有回到主畫面的功能,這就是一個不錯的選擇。

    回覆刪除