tất cả những gì tôi cần biết là khi tôi có thể thực hiện một số thao tác bằng một chuỗi độc lập, tại sao tôi cần Dịch vụ. Điều đó là gì, một Dịch vụ có thể làm nhưng Chủ đề không thể? Tôi đã đi qua nhiều bài đăng nhưng không thể tìm thấy câu trả lời thỏa đáng.Sự khác nhau giữa Dịch vụ và Chủ đề trong Android?
Trả lời
Lợi ích chính của Dịch vụ là truy cập vào đối tượng Ngữ cảnh có chu kỳ sống độc lập. Điều này cho phép tái sử dụng mã chung bởi nhiều hoạt động và, trong trường hợp các dịch vụ công khai hoặc tiếp xúc, nhiều ứng dụng.
Chủ đề là cơ chế để làm việc mà không chặn công việc khác.
Dịch vụ không có nghĩa là một sợi chỉ và một sợi không có nghĩa là một dịch vụ. Chúng là hai thứ rất khác nhau. Tôi có xu hướng sử dụng Dịch vụ trong các tình huống mà tôi cần ngữ cảnh để làm việc trước nhưng muốn mã được tách biệt khỏi các hoạt động của tôi để cải thiện khả năng sử dụng lại.
Difference between Service and Threaads
Vui lòng truy cập liên kết này, tôi hy vọng bạn sẽ tìm thấy câu trả lời trong liên kết này.
Tóm lại, sự khác biệt chính giữa Dịch vụ và Chủ đề là, Dịch vụ chạy trên luồng chính (Giao diện người dùng) và chuỗi Chạy trên chuỗi của riêng nó. Nếu chúng tôi đang sử dụng Dịch vụ cho các tác vụ dài thì có thể gây ra Chặn Giao diện người dùng chính.
Vui lòng truy cập liên kết đã cho để biết thêm chi tiết.
Dịch vụ: là một thành phần của Android thực hiện hoạt động chạy trong nền, chủ yếu là khi có giao diện người dùng.
Chủ đề: là tính năng cấp độ O.S cho phép bạn thực hiện một số thao tác trong nền.
Mặc dù cả hai khái niệm đều giống nhau nhưng có một số khác biệt quan trọng.
1.Service - nếu nó bị hủy trong khi thực hiện công việc, ở giữa bởi Android do kịch bản bộ nhớ thấp. Sau đó, android sẽ đảm bảo rằng nó sẽ khởi động lại dịch vụ của bạn, nếu bạn đã trả về START_STICKY hoặc START_REDELIVER_INTENT từ onStartCommand().
2.Thread - nếu nó bị android hủy ở giữa do bộ nhớ thấp thì android sẽ không đảm bảo khởi động lại lần nữa. Điều đó có nghĩa là người dùng mất một nửa công việc của mình.
3.Service - là một thành phần của Android, do đó, nó có mức độ ưu tiên được xem xét trong khi hủy ứng dụng do bộ nhớ thấp.
4. Chủ đề - không phải là một thành phần của Android, vì vậy Android sẽ không xem xét ưu tiên luồng trong khi giết ứng dụng do bộ nhớ thấp.
Tôi sẽ cố gắng giải thích điểm thứ ba này.
Cho phép, giả sử bạn có yêu cầu kết nối internet từ hoạt động của mình. Bạn có thể làm điều đó bằng cách sử dụng một dịch vụ (với chuỗi) hoặc trực tiếp bằng cách tạo một luồng trong hoạt động. Hãy xem xét kịch bản thứ hai nơi bạn đang kết nối với internet trong một chủ đề.Sau đó,
i. Điều gì sẽ xảy ra nếu người dùng đóng hoạt động, trong khi luồng vẫn đang chạy trong nền. Chuỗi đó có tiếp tục chạy ở mặt đất không? Câu trả lời là bạn không thể dự đoán được.
ii. Giả sử rằng trong tiếp tục cho kịch bản trên, ngay cả sau khi giết chết hoạt động của bạn chủ đề tiếp tục làm hoạt động dự định của nó. Sau đó, có một tình trạng bộ nhớ thấp phát sinh trong điện thoại của bạn. Sau đó, ứng dụng này sẽ là ứng dụng nhạy cảm đầu tiên bị giết vì không có ưu tiên cho ứng dụng này.
Vì vậy, dòng dưới cùng là: Nếu bạn muốn thực hiện một số chức năng nền nặng thì tốt nhất là nên có một dịch vụ có chuỗi. Nếu bạn cảm thấy rằng chức năng nền đó vẫn còn hoạt động miễn là hoạt động của bạn vẫn còn hoạt động, thì hãy thực hiện hoạt động với chuỗi hoặc hoạt động với nhiệm vụ không đồng bộ.
Hy vọng điều đó sẽ hữu ích.
- 1. Sự khác biệt giữa Tác vụ (System.Threading.Task) và Chủ đề
- 2. Sự khác nhau giữa Dịch vụ Cửa sổ, ứng dụng Dịch vụ WCF và ứng dụng dịch vụ web ASP.NET?
- 3. Sự khác nhau giữa dịch vụ nền và nền trước là gì?
- 4. Sự khác biệt giữa Thành phần OSGi và Dịch vụ
- 5. Sự khác nhau giữa đề an toàn và an toàn
- 6. Sự khác biệt giữa BackgroundWorker và Chủ đề?
- 7. Sự khác biệt giữa AsyncTask và Chủ đề/Runnable
- 8. Sự khác nhau giữa android: chiều rộng và android: layout_width
- 9. sự khác nhau giữa sendStickyBroadcast và sendBroadcast trong Android
- 10. Sự khác nhau giữa android: layout_width và android: width
- 11. Sự khác biệt giữa dịch vụ web OData và REST
- 12. Sự khác biệt giữa, tải lại dịch vụ và khởi động lại dịch vụ là gì?
- 13. Sự khác biệt giữa dịch vụ và máy thu phát sóng trong android
- 14. Sự khác biệt giữa servlet và dịch vụ web
- 15. Sự khác nhau giữa điểm cuối, dịch vụ và cổng khi làm việc với dịch vụ web là gì?
- 16. Sự khác biệt giữa Chủ đề công nhân CLR và Chủ đề công nhân là gì?
- 17. Chủ đề tùy chỉnh Android: chủ đề khác nhau cho chế độ ngang và dọc
- 18. sự khác biệt giữa tên máy chủ XMPP và tên dịch vụ XMPP?
- 19. Sự khác nhau giữa Ứng dụng Dịch vụ WCF và Thư viện Dịch vụ WCF là gì?
- 20. Sự khác nhau giữa dịch vụ web thông thường và dịch vụ web dựa trên xà phòng là gì?
- 21. Sự khác nhau giữa Bộ điều khiển và Dịch vụ là gì?
- 22. Sự khác nhau giữa plugin xoắn ốc và dịch vụ xoay vòng là gì?
- 23. Sự khác nhau giữa onClickListener và onItemClickListener
- 24. Sự khác nhau giữa IIFE và gọi
- 25. Dừng một Dịch vụ Android từ trong một chủ đề
- 26. Dịch vụ Android và nhiệm vụ lặp đi lặp lại chạy trong chủ đề
- 27. Sự khác biệt giữa Chủ đề và Trình xử lý
- 28. Sự khác nhau giữa sqlplus và sqldeveloper?
- 29. Sự khác nhau giữa Azure Web Site và dịch vụ Azure Cloud là gì
- 30. Sự khác nhau giữa các dịch vụ RDP/Terminal và các kỹ thuật trực tuyến VNC
Ok .. Nếu trong trường hợp tôi chuyển ngữ cảnh trong chuỗi công nhân thì nó có phục vụ mục đích không? – SAMD
bạn đã không giải thích trường hợp hoặc mục đích vì vậy nó khó cho tôi để nói với bạn. –
Thực ra tôi đang tìm một số trường hợp đặc biệt mà một Dịch vụ là một điều cần thiết để được sử dụng. Tôi đã được hỏi câu hỏi này và không thể trả lời, vì vậy tôi đang cố gắng tìm kiếm trợ giúp bằng cách sử dụng Stack Overflow. – SAMD