首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android 線程與 Activity 生命週期:跨 Activity 更新 UI 的正確做法

     編輯:程式設計疑難解答

現象

Activity A 啟動執行緒,跳轉至 Activity B 後,執行緒仍在運行,需將訊息傳遞給 B 更新 UI。

解決方案

  1. 全域參考:在 Application 子類別或單例中持有執行緒實例,B 透過 MyApp.getInstance().getThread() 取得。
  2. Handler 機制:執行緒持有 B 的 Handler 引用(或使用 WeakReference 避免洩漏),發送 Message 更新 UI。
  3. EventBus / LiveData:解耦發送與接收,B 訂閱事件,執行緒發布事件。

程式碼片段

// 在執行緒中
Handler handler = new Handler(Looper.getMainLooper()) {
    @Override
    public void handleMessage(Message msg) {
        // 更新 B 的 UI
    }
};
// 或使用 EventBus
EventBus.getDefault().post(new UpdateEvent(data));

注意

  • 避免在執行緒中直接持有 Activity 強引用,導致記憶體洩漏。
  • Activity 銷毀時取消訂閱或移除 Handler 訊息。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved