2010-08-30 25 views
6

Vì vậy, tôi hiểu vòng đời dịch vụ và tất cả điều đó. Nhưng tôi nhầm lẫn thông số startId là gì?Thông số startId dịch vụ Android

public int onStartCommand (Intent intent, int flags, int startId) 

Tôi nhận được rằng nó được sử dụng kết hợp với stopSelf(int), nhưng tôi không nhìn thấy những gì điểm là hay nơi startId đang được tạo ra. Trường hợp sử dụng nào sẽ sử dụng stopSelf (int) thuộc?

Trả lời

4

Trường hợp sử dụng nào sẽ sử dụng stopSelf (int) thuộc?

BướC# 1: Gọi startService()

BướC# 2: Gọi startService() lại

BướC# 3: Gọi stopSelf()

Tại thời điểm này, chúng tôi muốn các dịch vụ để không bị dừng lại, vì vẫn còn hoạt động nổi bật, được biểu thị bằng cuộc gọi thứ hai startService(). Chúng tôi muốn các cuộc gọi startService()stopSelf() khớp với nhau.

+0

Ồ, tôi nghĩ mình đã hiểu. Tôi nghĩ rằng tôi đang overthinking này. Vì vậy, chúng tôi sẽ chỉ lưu trữ startId thành một biến toàn cầu bất cứ khi nào onStartCommand() được thực hiện, và sau đó gọi stopSelf (int) trên biến toàn cầu đó. Ok gotcha. Tôi đã cố gắng suy nghĩ về việc đặt ID vào hàng đợi đồng bộ hoặc một cái gì đó lol – Falmarri

+1

@Falmarri: "Vì vậy, chúng tôi sẽ chỉ lưu trữ startId thành biến toàn cầu bất cứ khi nào onStartCommand() được thực hiện" - không, vì sẽ có một số trong số này. Bạn có thể muốn kiểm tra 'IntentService' và xem xét xem đó có phải là lớp cơ sở tốt hơn để bạn sử dụng hay không. Nó xử lý chính bản thân 'stopSelf (int)', trong số các tính năng khác. – CommonsWare

+0

Hmm, sau đó tôi đoán tôi vẫn còn bối rối. Làm thế nào bạn sẽ đi về việc xử lý nó cho mình? Có một ví dụ? Tôi đã không thấy bất kỳ việc sử dụng startId trong bất kỳ ví dụ nào – Falmarri

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