2011-12-08 39 views
5

Tôi có dịch vụ trong ứng dụng của mình, vì một số ứng dụng khác cũng có. Từ những gì tôi đang sử dụng, tôi có thể thấy (và giết) các dịch vụ độc đáo trong các thiết lập -> (chạy) dịch vụ. Nhưng: không phải của tôi ...Dịch vụ Android đang chạy nhưng không hiển thị trong cài đặt -> dịch vụ đang chạy

Bản thân dịch vụ được mở rộng từ IntentService. Nó được xử lý báo động Intents qua BroadcastReceiver và cũng có tin nhắn từ ứng dụng của tôi và trở lại để làm một số công việc. Vì nó là điều cần thiết để ứng dụng của tôi và giữ một số phiên web từ xa và (đọc: "rất nhiều") khác dữ liệu liên tục, tôi dứt khoát bắt đầu nó trong hoạt động chính với

startService(new Intent(this, HeartBeatService.class)); 

và trong dịch vụ, tôi thậm chí sử dụng

startForeground(NOTIFY_RUNNING, runNotification); 

Hoạt động khác của ứng dụng của tôi bằng dịch vụ chỉ sử dụng bindService(), hoạt động như một sự quyến rũ.

Thực sự đang chạy. Hoàn hảo và luôn luôn, như tôi mong muốn, ngay cả khi các hoạt động bị giết bởi android vì bất cứ điều gì android nghĩ rằng nó tốt cho.

Chỉ: Tôi không "thấy" nó đang chạy. Tôi cũng đã cố gắng ghi đè dịch vụ trênStartCommand() để trả về START_STICKY, nhưng không có gì thay đổi. Tôi biết, điều này không nên được ghi đè trong IntentService.

Hay tôi chỉ nghĩ sai? IntentService "khác"?

Cảm ơn bạn!

Trả lời

5

Từ tài liệu tham khảo tài liệu hướng dẫn Android:

IntentService là một lớp cơ sở cho các dịch vụ có thể xử lý các yêu cầu không đồng bộ (thể hiện dưới dạng Intents) theo yêu cầu. Khách hàng gửi yêu cầu thông qua các cuộc gọi startService (Intent); dịch vụ được bắt đầu khi cần thiết, xử lý từng Intent lần lượt bằng cách sử dụng một chuỗi công nhân, và dừng lại khi nó hết công việc.

Dịch vụ của bạn sẽ chỉ chạy khi nhận được ý định và dừng lại sau khi hoàn thành mục đích.

Ngoài ra, tôi đã thấy rằng các dịch vụ được liên kết với hoạt động sẽ không hiển thị trong màn hình dịch vụ đang chạy.

Khi bạn xóa ràng buộc, chúng sẽ hiển thị.

+0

Đọc và hiểu những gì được viết đôi khi sẽ giúp ích ... Tôi đoán tôi đã nghĩ hoàn toàn sai. Tôi sẽ cấu trúc lại lớp đó thành Service chuẩn và chỉ cần gọi IntentService.onHandleIntent cũ của tôi() trong một Thread Runnable mới từ onStartCommand(). Hãy xem điều gì sẽ xảy ra ... Báo cáo sau này ... – Oliver

+1

Được tái cấu trúc dưới dạng Dịch vụ thay vì IntentService, hoạt động tương tự, PLUS được hiển thị ngay trong các dịch vụ ứng dụng;) Nhưng tôi thực sự tự hỏi, vì ghi đè lên onStartCommand() với việc trả lại START_STICKY đáng lẽ phải làm nó cũng. Không ý kiến. Cảm ơn anyways cho con trỏ! – Oliver

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