سؤال

أحاول تغيير أولوية الموضوع الرئيسي باستخدام 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()

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top