تغيير أولوية الخيط ليس له تأثير
-
14-11-2019 - |
سؤال
أحاول تغيير أولوية الموضوع الرئيسي باستخدام android.os.Process.setThreadPriority()
.لدي رسائل سجل قبل وبعد تغيير الأولوية ، وهنا هو رمز:
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());
}
}
وأحصل على الإخراج التالي:
priority before change (getThreadPriority) = 0
priority before change (currentThread().getPriority) = 5
priority after change (getThreadPriority) = 0
priority after change (currentThread().getPriority) = 5
هذا يعني أن الأولوية لم تتغير ، مهما كانت الطريقة التي أستخدمها لتقييمها.android.os.Process.THREAD_PRIORITY_DISPLAY = -4
, لذلك بعد تغيير بلدي يجب أن يساوي -4, لماذا لا يزال هو نفسه?لماذا android.os.Process.setThreadPriority()
ليس له تأثير?
سكرتير خاص.قرأت مستندات جوجل حول المواضيع ، ولكن لم أكن تأتي عبر أي قضايا شرح الفرق بين android.os.Process.getThreadPriority()
و Thread.currentThread().getPriority()
.لماذا هذه الأساليب إرجاع قيم مختلفة?
بي. بي. إس. Thread.currentThread().setPriority()
يعمل بشكل جيد.
المحلول
كنت تستخدم ثريديد خاطئ للشيك الخاص بك.
للحصول على معرف الصحيح لديك لاستخدام الروبوت.نظام التشغيل.عملية.ميتيد();
رمز ثابت:
package mypackage.test;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
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=android.os.Process.myTid();
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());
}
}
إخراج السجل:
priority before change = 0
priority before change = 5
priority after change = -4
priority after change = 5
لمزيد من المرجع:
http://developer.android.com/reference/android/os/Process.html#myTid()