[英]Android Threading - running a thread from another thread and waiting for a handler message
[英]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.