Cách tốt nhất để kiểm tra xem Dịch vụ Android có đang chạy không? Tôi biết về API ActivityManager
, nhưng có vẻ như việc sử dụng API không được thông báo cho các kịch bản tương tự như của tôi (source). Tôi cũng biết khả năng sử dụng các biến toàn cầu/liên tục để duy trì trạng thái của một dịch vụ.Android: Kiểm tra xem dịch vụ có đang chạy hay không. bindService
Tôi đã cố gắng sử dụng bindService
với cờ thiết lập để 0
, nhưng tôi có những vấn đề tương tự như người trên nguồn liên kết (ngoại lệ duy nhất là, tôi đã cố gắng các bindService
với một dịch vụ địa phương).
Cuộc gọi sau
getApplicationContext().bindService(new Intent(getApplicationContext(),
MyService.class), mServiceConnection, 0);
luôn trả về true, nhưng không được kết nối. Đây có phải là hành vi mong đợi không? Dường như với tôi bindService
sẽ trả về false nếu dịch vụ chưa chạy (nó không phải là, tôi đã kiểm tra) hoặc nếu cờ BIND_AUTO_CREATE
không được đặt (một lần nữa, nó không phải là).
Hãy nói rằng tôi sẽ muốn in một thông báo "Dịch vụ đang chạy" hoặc "Dịch vụ không chạy". Đó là lý do tại sao tôi phải nhận được thông tin nếu dịch vụ đang chạy hay không. Tôi không thể làm điều đó bằng cách gọi startService. – Igor
Nhưng tại sao bạn phải in thông điệp này? Chỉ có 2 thứ bạn có thể làm nếu dịch vụ không chạy. Hoặc là bắt đầu hay không. – Falmarri
Vì tôi muốn thông báo cho người dùng nếu dịch vụ đang chạy hay không. Người dùng nên bắt đầu và dừng dịch vụ theo cách thủ công (thông qua một nút bấm).Khi người dùng đóng hoạt động (nút BACK), dịch vụ sẽ vẫn chạy. Và hoạt động sẽ biết, khi người dùng bắt đầu nó vào lần sau, dịch vụ đã chạy. – Igor