Tôi đang tạo thông báo cho khay thông báo. Tôi đang chỉ định mục đích nhấp như thế này:Không thể xóa thêm ý định!
Intent intent = new Intent(context, MyActivity.class);
intent.putExtra("foo", true);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.setData(Uri.parse("" + System.currentTimeMillis()));
Lớp MyActivity được khởi chạy tốt với thông số "foo" hiện tại. Tuy nhiên, tôi không thể loại bỏ điều đó thêm sau đó - dường như vẫn tồn tại trong Mục đích:
// MyActivity
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// please go away..
intent.removeExtra("foo");
getIntent().removeExtra("foo");
}
Lặp lại các phím của ý định cho thấy rằng "foo" không còn tồn tại nữa. Nhưng nếu tôi nền hoạt động, sau đó đưa nó vào nền trước một lần nữa, các "foo" tham số có mặt một lần nữa.
Bất kỳ ai biết cách thực sự loại bỏ nó? Tôi cũng đã thử gọi setIntent(), cùng một hành vi. Nó giống như các phóng giữ vào ý định ban đầu và tiếp tục tái sử dụng nó.
Cảm ơn
Đây là một trong những trường hợp ngớ ngẩn với Java và con trỏ. Bạn có thể phải cố gắng hoàn thành ý định ban đầu sau khi sao chép nó mà không có foo. – hwrdprkns
Ah làm thế nào để hoàn thành ý định ban đầu, tôi sẽ làm một cái gì đó như gọi kết thúc() từ onNewIntent(), và chỉ cần khởi chạy lại hoạt động một lần nữa? Tôi đoán người dùng sẽ không nhìn thấy bước nhảy lén lút, và tôi sẽ loại bỏ thêm "foo" đó. Tôi nghĩ nó có thể làm việc! – user291701
'Intent.finalize()'? – hwrdprkns