Sto tentando di modificare la priorità del thread principale utilizzando android.os.Process.setThreadPriority()
. Ho registrare i messaggi prima e dopo il cambio di priorità, qui è il codice:La modifica della priorità del thread non ha alcun effetto
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());
}
}
E ottengo il seguente output:
priority before change (getThreadPriority) = 0
priority before change (currentThread().getPriority) = 5
priority after change (getThreadPriority) = 0
priority after change (currentThread().getPriority) = 5
Vuol dire che la priorità non è cambiata, qualunque metodo che uso per valutare esso. android.os.Process.THREAD_PRIORITY_DISPLAY = -4
, quindi dopo aver cambiato la mia uscita dovrebbe essere uguale a -4, perché rimane lo stesso? Perché android.os.Process.setThreadPriority()
non ha alcun effetto?
P.S. Ho letto documenti google sui thread, ma non ho riscontrato problemi relativi alla differenza tra android.os.Process.getThreadPriority()
e Thread.currentThread().getPriority()
. Perché questi metodi restituiscono valori diversi?
P.P.S. Thread.currentThread().setPriority()
funziona correttamente.