2013-04-29 16 views
11

Tài liệu Android xác định Mục đích là "một nhóm thông tin có chứa mô tả trừu tượng về hoạt động để thực hiện". Điều này gợi ý rằng bạn có thể sử dụng lại một đối tượng Intent nhiều lần nếu cần, nhưng tôi chưa thấy bất kỳ ví dụ nào cho thấy đây là trường hợp/an toàn để thực hiện. Có lý do nào để KHÔNG thực hiện những việc sau:Có an toàn để tái sử dụng một mục đích không?

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

và sau đó gọi startActivityForResult(enableDiscoverableIntent, REQUEST_ENABLE_BT_DISCOVERY) ở nhiều nơi trong mã? Điều gì xảy ra nếu cùng một ý định được bắt đầu hai lần?

+0

Ví dụ về thời điểm bạn sẽ sử dụng lại 'Intent' là gì? Đôi khi tôi tạo một đối tượng 'Intent', sau đó sử dụng nó ở các vị trí khác nhau trong' Hoạt động' tùy thuộc vào điều kiện nào được đáp ứng và khi nào. Không biết liệu điều đó có giúp ích hay không ... – codeMagic

+0

Ví dụ của tôi là yêu cầu quyền truy cập bluetooth, ví dụ này sẽ khởi chạy cửa sổ bật lên yêu cầu người dùng xác nhận hoặc từ chối bluetooth. Điều này có thể xảy ra ở một vài nơi khác nhau. Nếu chúng tôi sử dụng ý định và bluetooth được bật thành công, nhưng sau đó bluetooth bị tắt ở nơi khác, chúng tôi muốn yêu cầu lại. Sử dụng cùng một đối tượng có vẻ sạch sẽ nhất vì chúng tôi chỉ muốn gửi cùng một yêu cầu. – maria1nes

+0

Điều này có vẻ hợp lý với tôi và tôi không thấy bất kỳ vấn đề nào. Tuy nhiên, trong một số trường hợp, bạn có thể muốn sử dụng 'Intent flags' để làm những việc như xóa bất kỳ tác vụ tương tự nào đã được bắt đầu từ' Intent' này từ ngăn xếp – codeMagic

Trả lời

7

Nó là hoàn toàn an toàn khi bạn muốn sử dụng nó để làm điều tương tự, vì Intent không nhiều hơn một loạt dữ liệu và hướng dẫn. Nếu bạn muốn sử dụng cùng một đối tượng Intent cho các mục đích khác nhau (ví dụ: bạn có nhiều tab và cố gắng đặt các tab sử dụng lại cùng một ý định nhưng thay đổi hoạt động chúng sẽ khởi chạy), bạn phải cẩn thận hơn và tôi ' d khuyên bạn nên tạo lại đối tượng Intent mới cho mỗi đối tượng.

Các vấn đề liên quan