Một hoạt động khởi tạo một ResultReceiver và ghi đè lênReceiveResult. Hoạt động này sau đó gửi Intent đến IntentService và bao gồm ResultReceiver như một phần bổ sung. Khi IntentService kết thúc quá trình xử lý, nó sẽ gửi một thông điệp trở lại ResultReceiver và xử lý nó trong onReceiveResult.IntentService trả lời cho người nhận kết quả chết
Vấn đề là nếu người dùng điều hướng khỏi Hoạt động thì kết quả vẫn được gửi lại cho Trình phân tích kết quả gây ra tất cả các loại vấn đề. Không có cách nào để ngăn chặn hành vi này? Tôi đã thử dừng IntentService trong onDestroy của hoạt động() nhưng kết quả vẫn được gửi trở lại.
Đây là một Hoạt động mẫu
public class Foo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent i = new Intent(this, SampleIntentService.class);
i.putExtra("receiver", mReceiver);
startService(i);
}
@Override
public void onDestroy() {
stopService(new Intent(this, SampleIntentService.class));
mReceiver = null;
super.onDestroy();
}
ResultReceiver mReceiver = new ResultReceiver(new Handler()) {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
// Handle response from IntentService here
}
};
}
Đây là một IntentService mẫu
public class SampleIntentService extends IntentService {
public SampleIntentService() {
super(SampleIntentService.class.getName());
}
@Override
protected void onHandleIntent(Intent intent) {
ResultReceiver rec = intent.getParcelableExtra("receiver");
if (rec != null) {
rec.send(200, null);
}
}
}
giải pháp tốt ! Tôi đã sử dụng cùng một cách tiếp cận trong Phân đoạn thay vì Hoạt động của bạn – moondroid