2011-11-26 17 views
59

Có một số điều kiện mà dịch vụ của tôi có thể được cố gắng khởi động khi không được. Trong những trường hợp như thế này có phải là hình thức xấu để gọi số stopSelf() trong khi bên trong phương thức onStartCommand()? Nếu vậy cách tốt nhất để xử lý tình huống như thế nào? Mọi tài nguyên sẽ được đánh giá cao.Tôi có thể gọi stopSelf() trong Service.onStartCommand không?

Trả lời

73

có phải là hình thức xấu để gọi stopSelf() trong khi bên trong phương thức onStartCommand() không?

Tắt đầu của tôi, tôi không thể nghĩ tại sao điều đó lại là vấn đề.

stopSelf(), giống như nhiều thứ trong Android, không có hiệu lực ngay lập tức. Nó đặt một thông báo trên hàng đợi tin nhắn được xử lý bởi luồng ứng dụng chính. Công việc thực tế của việc ngừng dịch vụ sẽ không bắt đầu ngay cả sau khi onStartCommand() đã trở lại.

+2

Tôi nhận ra đó không phải là nhưng tôi không hoàn toàn chắc chắn về các hoạt động bên trong của lớp Service và gọi một hàm ngăn nó bắt đầu trước khi nó kết thúc. về cách nó được thiết kế. –

+8

@SpencerRuport: 'stopSelf()', giống như nhiều thứ trong Android, không có hiệu lực ngay lập tức. Nó đặt một thông báo trên hàng đợi tin nhắn được xử lý bởi luồng ứng dụng chính. Công việc thực tế của việc ngừng dịch vụ sẽ không bắt đầu ngay cả sau khi 'onStartCommand()' đã trở lại. – CommonsWare

+3

Như một câu hỏi tiếp theo, giá trị trả lại thích hợp khi gọi là 'stopSelf()' là gì? –

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