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?
59
A
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.
Các vấn đề liên quan
- 1. onServiceDisconnected() không được gọi sau khi gọi Dịch vụ stopSelf()
- 2. Tôi có thể gọi thẻ tùy chỉnh trong cfscript không?
- 3. Tôi có thể gọi xóa trên tài liệu gốc không?
- 4. Android, tôi có thể đặt AsyncTask trong một lớp riêng biệt và có gọi lại không?
- 5. Tôi có thể ngăn chặn window.onbeforeunload không được gọi khi thực hiện cuộc gọi AJAX
- 6. Tôi có cần gọi các cuộc gọi MessageBox không?
- 7. Tôi có phải gọi addSubview sau khi gọi addChildViewController không?
- 8. Tôi có thể sử dụng phương thức tĩnh làm gọi lại menu trong drupal không?
- 9. Tôi có thể buộc ngắn mạch của riêng mình trong một cuộc gọi phương thức không?
- 10. Tôi có thể gọi ToolsAPI từ mã trong DUitit GUITestrunner không?
- 11. Tôi có thể gọi chế độ xem từ trong chế độ xem khác không?
- 12. Tôi có thể gọi trang web java bắt đầu trong chương trình không?
- 13. Tôi có thể gọi một hàm trong biểu thức lambda không?
- 14. Tôi có thể thực hiện cuộc gọi tự động cho ai đó trong Android không?
- 15. Tôi có thể sử dụng các phương thức cá thể riêng làm gọi lại không?
- 16. Trong Perl, làm thế nào tôi có thể gọi một phương thức có tên tôi có trong một chuỗi?
- 17. Có API cấu trúc lại Eclipse nào mà tôi có thể gọi theo chương trình không?
- 18. Tôi có thể cấm gọi các phương thức tĩnh trên cá thể đối tượng không?
- 19. Có thể gọi tự động được không?
- 20. StreamWriter.Flush() cũng có thể gọi FileStream.Flush() không?
- 21. Có thể gọi phương thức có tên trong cuộc gọi đến đâu không?
- 22. Tôi có thể gọi Ruby từ Node.js bằng cách nào?
- 23. C++ có thể gọi mã Java không?
- 24. Tôi có thể gọi Perl từ Java bằng cách nào?
- 25. Làm thế nào tôi có thể gọi VBScript từ Javascript
- 26. Có thể kết hợp các cuộc gọi trong WCF không?
- 27. Có thể gọi hàm C++ từ JavaScript trong QWebView không?
- 28. Có thể chặn dữ liệu thoại trong khi gọi không?
- 29. Python có thể gọi hàm Delphi trong một DLL không?
- 30. Có thể nhận ngữ cảnh người gọi trong javascript không?
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ế. –
@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
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ì? –