2010-09-01 56 views

Trả lời

6

HandlerThread sử dụng IntentService không được tiếp xúc với SDK. Nó được đặt thành ưu tiên là Process.THREAD_PRIORITY_DEFAULT.

Lưu ý rằng IntentService là 143 dòng mã, bao gồm khoảng trắng và nhận xét, vì vậy bạn có thể xem xét việc nhân bản nó để có một ưu tiên bạn tìm kiếm.

+0

Cảm ơn Mark. Đó là những gì tôi đã làm. – smith324

-4

Tôi đã thay đổi mức độ ưu tiên của IntentService bằng cách sử dụng: "android.os.Process.setThreadPriority (android.os.Process.THREAD_PRIORITY_BACKGROUND);" trong hàm tạo của lớp IntentService.

Trong trường hợp của tôi nó đã được thay đổi từ: "Process.THREAD_PRIORITY_DEFAULT", đó là zero (0) để "Process.THREAD_PRIORITY_BACKGROUND", đó là mười (10) và kết quả là nhìn thấy được.

+2

Bạn đang thay đổi mức độ ưu tiên của chuỗi tạo IntentService, không phải ưu tiên của chuỗi là trình xử lý. Xem câu trả lời được chấp nhận để biết thêm thông tin. – espinchi

12

Bạn có thể đặt Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND) trong phương thức onHandleIntent() về dịch vụ ý định của mình.

Giải pháp của CommonsWare cũng hoạt động. Điều này là đơn giản, mặc dù.

0

Chỉ cần làm rõ - theo mặc định IntentService mức độ ưu tiên là mặc định- Process.THREAD_PRIORITY_DEFAULT vì sử dụng HandlerThread Nội bộ. Bạn có thể sử dụng Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND) trong OnHandleIntent() hoặc bất kỳ CommonsWare nào được đề xuất trong câu trả lời.

một số người đã nêu điều này là bug. và cũng có sẵn patch cho việc này.

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