2011-11-30 18 views
29

Este código produce un "hilo Dado que no existe" excepción cuando trato de usarlo en un hilo:¿Cómo obtener el Thread ID de Android?

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

Lo mismo ocurre si intento utilizar Process.setThreadPriority, utilizando el identificador de clase Java hilo. También noté que esto no coincide con el id. De subproceso que se muestra en el depurador. ¿Cómo obtengo el id. De hilo específico de Android para utilizar esta API?

+2

Ha comprobado si 'Process.myTid()' es ningún uso para usted? – harism

Respuesta

9

Mientras estamos trabajando con hilos. También queremos registrar los detalles del hilo para resolver el problema relacionado con el hilo. Cree una clase de Utils como a continuación y úsela para registrar la firma de la secuencia.

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

Referencia: www.androidbook.com

Cuestiones relacionadas