La modification de la priorité du thread n'a pas d'effet

J'essaie de modifier la priorité du thread principal en utilisant android.os.Process.setThreadPriority() . J'ai des messages de journal avant et après la modification de la priorité, voici le code:

 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()); } } 

Et j'obtiens la sortie suivante:

  • Impossible d'obtenir la réponse de OkHttp.body.toString () pour renvoyer une chaîne
  • Empêcher le déverouillage du clavier doux
  • Verrouiller l'appareil Android pour exécuter une seule application
  • Ndk build et .so création de fichier android
  • Comment passer des valeurs entre les fragments
  • Création de OnDragListener pour Google Map v2 Fragment
  •  priority before change (getThreadPriority) = 0 priority before change (currentThread().getPriority) = 5 priority after change (getThreadPriority) = 0 priority after change (currentThread().getPriority) = 5 

    Cela signifie que la priorité n'a pas changé, quelle que soit la méthode que j'utilise pour l'évaluer. android.os.Process.THREAD_PRIORITY_DISPLAY = -4 , donc après avoir changé mon débit devrait être égal à -4, pourquoi il reste le même? Pourquoi android.os.Process.setThreadPriority() n'a aucun effet?

    PS J'ai lu google docs sur les threads, mais je n'ai rencontré aucun problème expliquant la différence entre android.os.Process.getThreadPriority() et Thread.currentThread().getPriority() . Pourquoi ces méthodes renvoient-elles des valeurs différentes?

    PPS Thread.currentThread().setPriority() fonctionne bien.

  • Connexion Internet dans l'émulateur d'Android
  • Est-il possible d'héberger à distance une ressource utilisée dans une application Android de telle sorte qu'elle ne peut être utilisée que par mon application?
  • Notifications extensibles personnalisées dans Jelly Bean (4.1)
  • Erreur lors de l'importation d'un jet au projet Android
  • Icône gauche dans TextInputLayout
  • Obtenir des dimensions redimensionnables (ou la faire circuler)
  • One Solution collect form web for “La modification de la priorité du thread n'a pas d'effet”

    Vous utilisez le mauvais ThreadID pour votre chèque.

    Pour obtenir l'identifiant correct, vous devez utiliser android.os.Process.myTid ();

    Code fixe:

     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()); } } 

    Sortie du journal:

     priority before change = 0 priority before change = 5 priority after change = -4 priority after change = 5 

    Pour plus de détails:

    http://developer.android.com/reference/android/os/Process.html#myTid ()

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.