2012-10-08 39 views
7

Tôi đang làm việc trên ứng dụng kiểm tra một số trạng thái của điện thoại cứ sau 5 giây. Tôi đã thực hiện điều đó:Tiêu đề và mức tiêu thụ pin

Thread checking = new Thread() { 
    public void run(){ 
     while(<<some status>>) { 
      <<checkstatus and do something>> 
      Thread.sleep(5000); 
     } 
    } 
} 

Điều này có hại cho pin? Làm cách nào tôi có thể thực hiện theo cách khác? Dịch vụ ngừng hoạt động sau vài giây.

Trả lời

5

Để trả lời câu hỏi của bạn, nó phụ thuộc vào những gì bạn đang làm bên trong vòng lặp while.

Nếu bạn không sử dụng và đánh thức mọi thành phần "đắt tiền" (chẳng hạn như internet, bluetooth, cảm biến khác và màn hình), bạn sẽ ổn. Về cơ bản đây là cách hệ điều hành làm việc trong nền anyways và sử dụng một Thread là một trong những cách rẻ nhất.

Ngoài ra, nếu tác vụ của bạn là CPU chuyên sâu, bạn cũng sẽ tiêu hao pin.

Dịch vụ của bạn sẽ hoạt động tốt nếu bạn làm đúng.

Một cách khác sẽ sử dụng Trình xử lý, thao tác này sẽ tóm tắt nhiều phần quản lý chuỗi cho bạn.

+0

Cảm ơn bạn đã trả lời. Tôi kiểm tra nếu có một số tin nhắn SMS chưa đọc kết thúc cho người dùng nhắc nhở về điều đó. Đây là cách tốt nhất để làm điều đó? Có khả năng android giết chủ đề của tôi? –

+1

Vui lòng tham khảo http://stackoverflow.com/questions/1973071/broadcastreceiver-sms-received để biết thông tin về Nhận SMS. Bạn có lẽ nên sử dụng một người nhận thay thế. – Edison

2

Thread.sleep() làm cho chuỗi hiện tại bị tạm dừng, có nghĩa là CPU sẽ khả dụng cho các chủ đề khác hoặc đơn giản sẽ tắt. Cũng xin lưu ý rằng lực lượng ngủ chuyển đổi ngữ cảnh, nhưng bạn đang ở bên an toàn với khoảng thời gian ngủ lớn. Vì vậy, nói chung, tất cả mọi thứ là tùy thuộc vào bạn.

Bạn có thể sử dụng, ví dụ: PowerTutor để đảm bảo ứng dụng của bạn được thiết kế và triển khai đúng cách.

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