日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )

發布時間:2025/6/17 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、判定當前線程是否是主線程
  • 二、子線程中執行主線程方法
  • 三、主線程中執行子線程方法





一、判定當前線程是否是主線程



在 Android 中 , 如果要判定當前線程是否是主線程 , 可以使用如下方法進行判定 ;

調用 Looper 的 getMainLooper() 靜態方法獲取 mainLooper , 調用 Looper 的 myLooper() 靜態方法獲取 myLooper , 對比二者是否相等 ;

Looper.getMainLooper() 方法獲取的總是本進程的主線程 Looper 對象 ;

Looper.myLooper() 方法獲取的是當前 Looper 線程的 Looper 對象 ,

如果當前線程是主線程 , 那么這兩個 Looper 對象是相同的 ;

// 判斷當前線程是否是主線程// 獲取 mainLooper 與 myLooper 進行比較 , 如果一致 , 說明該線程是主線程boolean isMainThread = false;// 下面的情況下 , 線程是主線程if (Looper.getMainLooper() == Looper.myLooper()) {isMainThread = true;}



二、子線程中執行主線程方法



獲取主線程的 Looper , 通過 Looper 創建對應的 Handler , 然后通過該 Handler 向其發送 Runnable 任務即可 ;

一個線程只能有一個 Looper 和 MessageQueue , 但是可以有多個 Handler ;

其中 MessageQueue 封裝在 Handler 中 ;

// 將訂閱方法放到主線程執行// 獲取主線程 Looper , 并通過 Looper 創建 HandlerHandler handler = new Handler(Looper.getMainLooper());// 在主線程中執行訂閱方法handler.post(new Runnable() {@Overridepublic void run() {invokeMethod(subscription, event);}});



三、主線程中執行子線程方法



可以直接創建 Thread 線程并執行 ;

也可以創建 ExecutorService 線程池 , 執行線程任務 ;

/*** 線程池*/private final ExecutorService executorService = Executors.newCachedThreadPool();// 在線程池中執行方法executorService.execute(new Runnable() {@Overridepublic void run() {invokeMethod(subscription, event);}});

總結

以上是生活随笔為你收集整理的【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。