0

當在三星Galaxy Tab 10.1「(Android 3.1)上運行以下簡單測試活動時,我會看到主屏幕背景短暫閃爍,之前TestActivity2開始開始新的活動時,主屏幕背景瞬間可見

這個閃光燈是沒見過
- 沒有FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
運行時 - 在Galaxy Tab的7" 運行時,運行Android 2.3

任何想法是什麼原因造成這種閃光,我怎麼能躲開它?

public class TestActivity1 extends Activity 
{ 
    protected void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    TextView t = new TextView(this); 
    t.setText("TestActivity1"); 
    t.setOnClickListener(new View.OnClickListener() 
    { 

     @Override 
     public void onClick(View v) 
     { 
     //start TestActivity2 
     Intent intent = new Intent(getApplicationContext(), TestActivity2.class);   
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
     startActivity(intent);   
     } 
    }); 
    setContentView(t); 
    } 

} 

當比較有和沒有一個FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET試運行的logcat中,我注意到以下區別。

隨着FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

... INFO/SurfaceFlinger的(223):ID = 71中移除com.zappware.test/com.zappware.test.TestActivity1 IDX = 2圖大小= 3

沒有FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

... INFO/SurfaceFlinger的(223):ID = 75刪除com.zappware.test/com.zappware.test.TestActivity1 IDX = 3地圖大小= 3

也許這可以幫到您?

+0

你爲什麼要使用標誌擺在首位重起TestActivity1與Intent.FLAG_ACTIVITY_CLEAR_TOP – 2012-01-02 13:35:18

+0

時,同樣的事情發生?您是否嘗試過製作XML文件並將內容視圖設置爲該文件? – sfratini 2012-01-02 16:57:44

+0

@sfratini:當我開始一個活動並提供一些詳細信息時,我正在使用此標誌。當用戶按下回家時,我不想返回到此詳細信息頁面,而是返回到更一般的概述活動。 – 2012-01-03 08:14:36

回答

0

那麼,你正在清理堆棧,所以也許這就是它發生的原因。我可以建議覆蓋後退按鈕行爲嗎?

http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

編輯:

我想在這樣的事情。 2.0開始,你可以這樣做:

@Override 
public void onBackPressed() { 
Intent intent = new Intent(getApplicationContext(), MyActivity.class); 
startActivity(intent); 
} 
+0

它確實可能與堆棧有關。但是,當使用FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET時,堆棧未被清理。當我從Activity1移動到Activity2時,Activity1保持在堆棧上。當活動2處於活動狀態時,該標誌只應按住HOME時纔有效。對於第二種情況也是如此:當我使用FLAG_ACTIVITY_CLEAR_TOP從Activity1導航到Activity1時:也在這裏Activity1保留在堆棧上(僅刪除它上面的活動,因此堆棧絕不能爲空) – 2012-01-04 08:54:39

+0

使用FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET的目的是:假設您開始活動ABCD並且C和D以FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET啓動。按HOME時,堆疊被裁剪爲A-B。我很高興看到您的建議(並感謝您的幫助),以覆蓋後退按鈕行爲,但您能否詳細說明爲什麼這可能有所幫助? – 2012-01-04 09:00:22

+0

那麼,你說你想讓用戶回到特定的活動,而不是之前在堆棧中的那個。超越後退按鈕行爲,您只能在該活動中執行此操作,並保持所有活動的正常行爲。看我的編輯。 – sfratini 2012-01-04 12:55:42

相關問題