2017-08-28 16 views
7

Làm thế nào tôi có thể hủy bỏ một JobIntentService? Tôi không thấy có phương pháp để làm như vậy trong tài liệu, ngoài có thể từ API JobSheduler và phương pháp Context#stopService(...), tôi không chắc liệu đó có phải là cách đúng hay không.Làm thế nào để hủy bỏ một JobIntentService

+0

Trước Android 8.0, 'JobIntentService' được triển khai dưới dạng' IntentService'. Trong khi bạn có thể sử dụng 'stopService()' để phá hủy 'IntentService', điều này có thể không có ảnh hưởng đến luồng nền được sử dụng cho' onHandleIntent() '(tôi chưa bao giờ thử điều này). – CommonsWare

Trả lời

0

JobIntentService chỉ được đưa IntentService để Android 8+ đó là nghiêm ngặt hơn về các dịch vụ nền. Nó chạy như cũ IntentService s trên các thiết bị có phiên bản Android cũ hơn.

IntentService chưa bao giờ được thiết kế để hủy, do đó thiếu bất kỳ API nào để hủy bỏ JobIntentService.

Do đó, JobIntenService chỉ nên được sử dụng cho công việc không cần phải hủy. Lưu ý rằng JobIntentService vẫn có thể được sử dụng cho công việc có thể không thành công và do đó bị hủy bỏ.

làm việc có thể bị hủy bỏ nên được thực hiện trong một trong hai:

  • Một Activity (hoặc ViewModel của nó) cho công việc thời gian ngắn
  • Một JobService (sử dụng căn cứ hỏa lực công việc Dispatcher hoặc Job Scheduler nếu minSdk là 21)
  • Dịch vụ tiền cảnh tùy chỉnh
1

Trước Android 8.0, JobIntentService được triển khai dưới dạng IntentService. IntentService không dừng hoặc nhận bất kỳ yêu cầu nào khác thông qua một số hành động có chủ định cho đến khi phương thức onHandleIntent hoàn tất yêu cầu trước đó. stopService() sẽ không được gọi cho đến khi nhiệm vụ được hoàn thành. Và nó được gọi tự động khi nó được. Đó là một tính năng của IntentService Nhưng một câu hỏi tương tự đã được trả lời ở đây đề cập đến IntentServices, hy vọng nó sẽ giúp.

answered question

cũng kiểm tra android developers

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