android 打印线程信息
今天,講講如何打印線程的id。
用語句:
???Android.os.Process
????//獲取當前進程的方法
????android.os.Process.getElapsedCpuTime():獲取消耗的時間。
android.os.Process.myPid():獲取該進程的ID。
android.os.Process.myTid():獲取該線程的ID。
android.os.Process.myUid():獲取該進程的用戶ID。
????android.os.Process.supportsProcesses:判斷該進程是否支持多進程。
?????
????// 獲取/設置線程優先級
????getThreadPriority(int tid):獲取指定ID的線程的優先級。
????setThreadPriority(int priority):設置當前線程的優先級。
????setThreadPriority(int tid,int priority):設置指定ID的線程的優先級。
????
????//管理進程
????killProcess(int pid):殺死指定的進程。
????sendSignal(int pid,int singal):向指定的進程發送信號。
????
????android.os.Environment
????//獲取系統環境變量
????getDataDirectory():獲取當前系統中數據文件夾環境變量。
????getDownloadCacheDirectory():獲取當前系統中下載緩存文件環境變量。
????getExternalStorageDirectory():獲取當前系統中外部存儲文件環境變量。
????getRootDirectory():獲取當前系統中根文件環境變量。
---------------------------------------
實例:viewrootImp.Java中的構造函數,打印進程和線程id
public ViewRootImpl(Context context, Display display) {mContext = context;mWindowSession = WindowManagerGlobal.getWindowSession();mDisplay = display;mBasePackageName = context.getBasePackageName();mDisplayAdjustments = display.getDisplayAdjustments();mThread = Thread.currentThread();Log.d("stl","ViewRootImpl "+android.os.Process.myPid()+" Thread: "+android.os.Process.myTid()+" name "+Thread.currentThread().getName());輸出:
01-08 13:22:23.509 2373 2373 D stl : ViewRootImpl 2373 Thread: 2373 01-08 13:22:25.929 4027 4027 D stl : ViewRootImpl 4027 Thread: 4027 01-08 13:22:26.979 4168 4168 D stl : ViewRootImpl 4168 Thread: 4168 01-08 13:22:27.949 3825 3825 D stl : ViewRootImpl 3825 Thread: 3825 01-08 13:22:28.069 3825 3825 D stl : ViewRootImpl 3825 Thread: 3825前面一個號是進程id,后面一個號是線程id。
另外,可以使用getThreadId()?方法一個正在運行線程的ID。
public class Main extends Object implements Runnable {private ThreadID var;public Main(ThreadID v) {this.var = v;}public void run() {try {print("var getThreadID =" + var.getThreadID());Thread.sleep(2000);print("var getThreadID =" + var.getThreadID());} catch (InterruptedException x) {}}private static void print(String msg) {String name = Thread.currentThread().getName();System.out.println(name + ": " + msg);}public static void main(String[] args) {ThreadID tid = new ThreadID();Main shared = new Main(tid);try {Thread threadA = new Thread(shared, "threadA");threadA.start();Thread.sleep(500);Thread threadB = new Thread(shared, "threadB");threadB.start();Thread.sleep(500);Thread threadC = new Thread(shared, "threadC");threadC.start();} catch (InterruptedException x) {}} }class ThreadID extends ThreadLocal {private int nextID;public ThreadID() {nextID = 10001;}private synchronized Integer getNewID() {Integer id = new Integer(nextID);nextID++;return id;}protected Object initialValue() {print("in initialValue()");return getNewID();}public int getThreadID() {Integer id = (Integer) get();return id.intValue();}private static void print(String msg) {String name = Thread.currentThread().getName();System.out.println(name + ": " + msg);} }結果
上面的代碼示例將產生以下結果。
android 打印線程信息就講完了。
就這么簡單。
總結
以上是生活随笔為你收集整理的android 打印线程信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android Lint优化代码
- 下一篇: android studio 快速删除无