30/09/2018, 19:44

Cho mình xin hướng giải quyết khi giao tiếp giữa Service và Activity

Các bạn cho mình xin hướng giải quyết trong trường hợp này với.
Mình có một activity và một service. Bắt đầu ở Activity mình sẽ bắt đầu Turn ON ở Switch Button để chạy service. Làm sao để khi service kết thúc thì khi OnResume trở lại Activity thì Turn OFF switch?

Đến từ Na Mếc viết 21:45 ngày 30/09/2018

Khi service kết thúc, dùng BroadCastReceiver để send message tới activity báo hiệu sự kiện đã làm xong . Activity đón sự kiện này và làm gì thì tùy ý

Phan Hoàng viết 21:50 ngày 30/09/2018

Có thể sử dụng một cơ chế #:

  • Khi service kết thúc, cho một cái flag vào database / preference thông báo rằng service đã ngỏm.
  • Khi trở về Activity, check cái cờ này và hiển thị trạng thái tương ứng của Service hiện giờ (sống hay đã chết).

À, mà cái Service của bạn chỉ chạy trong 1 Activity hay IntentService chạy ở tất cả App. Mình suggest dùng IntentService để đỡ bị block app, bạn bật Service lên, cho nó chạy, chuyển sang màn hình # làm việc #. Khi nào service xong, save cờ vào storage + báo cho Notification (hoặc Receiver) để hiển thị thông báo đã xong background task.

Minh Hoàng viết 21:52 ngày 30/09/2018

Mình hiện giờ đang dùng cách kiểm tra service có killed chưa.
Cách của bạn @Kameyoko dùng BroadCastReceiver thì thằng BroadCastReceiver và thằng Acitivity chỉ giao tiếp khi Activity đang chạy thôi phải ko? Khi onPause thì 2 thằng này cũng ngừng gởi nhận với nhau phải ko?

Phan Hoàng viết 21:57 ngày 30/09/2018

Đúng vậy. Thường thì Receiver được register trong Activity và được lắng nghe các broadcast message. Khi có 1 broadcast message, receiver sẽ bất lấy cái intent (trong có chứa data) và đưa cho Activity xử lý (chủ yếu là cập nhật lại GUI xem %progress, what happen in background)

Bài liên quan
0