2011-11-30 30 views
29

此代码抛出一个“考虑的主题不存在”异常当我尝试在一个线程中使用它:如何获取Android线程ID?

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

同上,如果我尝试使用Process.setThreadPriority,使用Java类线程ID。我也注意到这与调试器中显示的线程ID不匹配。如何获取Android特定的线程ID,以便使用此API?

+2

你检查是否'Process.myTid()'对你有什么用处? – harism

回答

9

当我们使用线程。我们也想记录线程的细节来解决线程相关的问题。如下创建一个Utils类并使用它来记录线程签名。

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

参考:www.androidbook.com