Tôi đang cố thay đổi mức độ ưu tiên của chuỗi chính bằng cách sử dụng android.os.Process.setThreadPriority()
. Tôi có thông điệp đăng nhập trước và sau khi thay đổi ưu tiên, đây là mã:Thay đổi mức ưu tiên của chuỗi không có hiệu lực
public class TestActivity extends Activity {
public final String TAG="TestActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int tid=(int)Thread.currentThread().getId();
Log.d(TAG,"priority before change = " + android.os.Process.getThreadPriority(tid));
Log.d(TAG,"priority before change = "+Thread.currentThread().getPriority());
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_DISPLAY);
Log.d(TAG,"priority after change = " + android.os.Process.getThreadPriority(tid));
Log.d(TAG,"priority after change = " + Thread.currentThread().getPriority());
}
}
Và tôi nhận được kết quả như sau:
priority before change (getThreadPriority) = 0
priority before change (currentThread().getPriority) = 5
priority after change (getThreadPriority) = 0
priority after change (currentThread().getPriority) = 5
Nó có nghĩa là ưu tiên mà không thay đổi, bất kể phương pháp tôi sử dụng để đánh giá nó. android.os.Process.THREAD_PRIORITY_DISPLAY = -4
, vì vậy sau khi thay đổi lưu lượng của tôi phải bằng -4, tại sao nó vẫn giữ nguyên? Tại sao android.os.Process.setThreadPriority()
không có hiệu lực?
P.S. Tôi đọc tài liệu google về chủ đề, nhưng tôi đã không gặp bất kỳ vấn đề nào giải thích sự khác biệt giữa android.os.Process.getThreadPriority()
và Thread.currentThread().getPriority()
. Tại sao các phương thức này trả về các giá trị khác nhau?
P.P.S. Thread.currentThread().setPriority()
hoạt động tốt.