簡體   English   中英

Android從長時間運行的線程中接收消息

[英]Android Recieve message from long running thread

在長時間運行的線程的示例中,如何將消息(不是可運行的)傳遞給UI線程?

基本上,如果我這樣做:

Looper.getMainLooper().sendMessage(myMessage);

如何在我的主“活動”線程中以事件形式接收此消息? 我知道我可以直接在創建線程時傳遞一個不同的處理程序,但是如果Activity被銷毀了,不是嗎?

我知道諸如異步任務,保留片段和單例之類的解決方法,但這僅是為了了解。

您需要創建一個與主Looper關聯的處理程序,並使用該處理程序發送消息。 這樣的事情:(警告:偽代碼,可能無法編譯)

Handler myHandler = new Handler(Looper.getMainLooper()) {
  @Override
  public void handleMessage(Message msg) {
    switch (msg.what) {
      case MY_MESSAGE_TYPE:
        //do something with the message
        break;
    }
  }
}

Message myMessage = myHandler.obtainMessage(MY_MESSAGE_TYPE, somePayloadObject);
myHandler.sendMessage(myMessage);

發送消息的處理程序也將“處理”該消息。

注意:如果在主線程上創建Handler,則可以使用空的構造函數。 默認情況下,它附加到當前的Looper線程。

同樣,如果您不想像您所說的那樣將它與Activity生命周期聯系在一起,則可以啟動Service來處理消息,或者如果消息具有暫時性,則可以使用應用程序單例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM