Tôi đã tự hỏi liệu có thể đặt mức độ ưu tiên của một số IntentService
như bạn có thể với một số Thread
hay không. Cho đến nay tôi đã không tìm thấy bất cứ điều gì.Cách đặt Mức độ ưu tiên của IntentService trong Android
Trả lời
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.
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.
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
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ù.
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ảm ơn Mark. Đó là những gì tôi đã làm. – smith324