2011-11-30 29 views
29

Mã này ném một "chủ đề Do không tồn tại" ngoại lệ khi tôi cố gắng sử dụng nó trong một thread:Cách lấy ID chủ đề Android?

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

Ditto nếu tôi cố gắng sử dụng Process.setThreadPriority, sử dụng id java lớp Thread. Tôi cũng nhận thấy rằng điều này không khớp với id luồng được hiển thị trong trình gỡ lỗi. Làm cách nào để nhận id chủ đề cụ thể của Android, để sử dụng API này?

+2

Bạn đã kiểm tra liệu 'Process.myTid() 'là bất kỳ sử dụng cho bạn? – harism

Trả lời

9

Trong khi chúng tôi đang làm việc với chủ đề. Chúng tôi cũng muốn đăng nhập chi tiết chủ đề để giải quyết vấn đề liên quan đến chuỗi. Tạo một lớp Utils như dưới đây và sử dụng nó để đăng nhập chữ ký chủ đề.

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

tham khảo: www.androidbook.com

Các vấn đề liên quan