44 votes

Comment obtenir l'ID de fil Android ?

Ce code lève une exception « Le fil donné n'existe pas » lorsque j'essaie de l'utiliser dans un fil :

 android.os.Process.getThreadPriority((int) Thread.currentThread().getId()));

Idem si j'essaye d'utiliser Process.setThreadPriority, en utilisant l'identifiant de thread de la classe java. J'ai également remarqué que cela ne correspond pas à l'ID de thread affiché dans le débogueur. Comment obtenir l'ID de thread spécifique à Android pour utiliser cette API ?

64voto

havexz Points 6707
android.os.Process.getThreadPriority(android.os.Process.myTid());

Pour plus de référence

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

13voto

vsvankhede Points 8

Pendant que nous travaillons avec des threads. Nous souhaitons également enregistrer les détails du fil pour résoudre le problème lié au fil. Créez une classe Utils comme ci-dessous et utilisez-la pour enregistrer la signature du thread.

 public class Utils 
{
   public static long getThreadId()
   {
      Thread t = Thread.currentThread();
      return t.getId();
   }

   public static String getThreadSignature()
   {
      Thread t = Thread.currentThread();
      long l = t.getId();
      String name = t.getName();
      long p = t.getPriority();
      String gname = t.getThreadGroup().getName();
      return (name 
            + ":(id)" + l 
            + ":(priority)" + p
            + ":(group)" + gname);
   }

   public static void logThreadSignature()
   {
      Log.d("ThreadUtils", getThreadSignature());
   }

   public static void sleepForInSecs(int secs)
   {
      try
      {
         Thread.sleep(secs * 1000);
      }
      catch(InterruptedException x)
      {
         throw new RuntimeException("interrupted",x);
      }
   }

Référence : www.androidbook.com

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X