2011-07-26 34 views
5

My MainActivitylauchMode="singleTask"làm thế nào để buộc các hoạt động khởi động lại từ ý định

Bây giờ tôi muốn bắt đầu hoạt động từ một thông báo với dữ liệu mục đích đặc biệt. trong MainActivity.onResume Tôi truy cập vào dữ liệu ý định đã cho ...

Vấn đề là: Khi hoạt động đã tồn tại và tôi nhấp vào thông báo, hoạt động đến trước, nhưng phương pháp onResume không được gọi và tôi không thể truy cập dữ liệu ý định.

Tôi đã thử cờ FLAG_ACTIVITY_CLEAR_TASK và điều này phù hợp với Honeycomb nhưng không hoạt động cho Gingerbread.

Đây là cách tôi bắt đầu hoạt động từ một thông báo:

Intent intent = new Intent(); 
intent.setClass(this, MainActivity.class); 
intent.putExtra("triggerid", triggerid); 
startActivity(intent); 

Trả lời

9

onResume() luôn gọi nếu hoạt động không phải là ở mặt trước. Tuy nhiên, điều bạn có thể thấy là getIntent() đang trả về ý định đã bắt đầu hoạt động chứ không phải ý định được gửi gần đây nhất.

Để khắc phục điều này, bạn nên ghi đè onNewIntent(). Điều này sẽ nhận được ý định mới được gửi đến nó. Sau đó, bạn có thể gọi setIntent() với mục đích đã nhận, điều này sẽ gây ra getIntent() để trả lại ý định mới khi được sử dụng trong onResume().

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