重用意图安全吗?

问题描述:

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

因为Intent不过是一堆数据和指令,所以当你想用它来做同样的事情时,它是完全安全的。如果你想为不同的目的使用相同的对象(例如,你有一堆标签,并尝试设置标签重用相同的意图,但改变他们将启动的活动),你必须更加小心,我' d建议为每个对象重新创建一个新的对象Intent