2013-04-29 58 views
11

Android文檔將Intent定義爲「包含要執行的操作的抽象描述的一組信息」。這表明,如果需要,您應該可以多次重複使用一個Intent對象,但我沒有看到任何示例顯示這種情況/可以安全地執行。有什麼理由不做到以下幾點:重用意圖安全嗎?

private final Intent enableBluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 
... 
protected void onCreate(Bundle savedInstanceState) { 
    enabledBluetoothIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0); 
    ... 
} 

,然後調用startActivityForResult(enableDiscoverableIntent, REQUEST_ENABLE_BT_DISCOVERY)在代碼中的多個地方呢?如果同一個意圖啓動兩次會發生什麼?

+0

什麼時候你會重用一個'意圖'的例子?我有時會創建一個'Intent'對象,然後在'Activity'的不同位置使用它,具體取決於滿足哪些條件以及何時滿足條件。不知道這是否有幫助... – codeMagic 2013-04-29 18:06:18

+0

我的例子是請求藍牙訪問,它啓動一個彈出窗口詢問用戶確認或拒絕藍牙。這可能發生在幾個不同的地方。如果我們使用意圖和藍牙成功打開,但後來藍牙關閉在其他地方,我們想要再次請求。因爲我們只是想發送相同的請求,所以使用同一個對象似乎最清晰。 – maria1nes 2013-04-29 18:12:55

+0

這對我來說似乎很合理,我沒有看到任何問題。但是,在某些情況下,您可能希望使用「Intent flags」來執行某些操作,例如清除堆棧中從此「Intent」啓動的任何類似任務 – codeMagic 2013-04-29 18:16:39

回答

7

因爲Intent不過是一堆數據和指令,所以當你想用它來做同樣的事情時,它是完全安全的。如果你想爲不同的目的使用相同的對象(例如,你有一堆標籤,並嘗試設置標籤重用相同的意圖,但改變他們將啓動的活動),你必須更加小心,我' d建議爲每個對象重新創建一個新的對象Intent