gpt4 book ai didi

android - 从 android 中的信使/处理程序获取待处理消息列表

转载 作者:行者123 更新时间:2023-11-29 00:25:51 25 4
gpt4 key购买 nike

我已经创建了一个服务,我正在使用带有处理程序的 Messenger 进行服务间通信。

public class LocalHandler extends Handler
{
public void handleMessage(Message message)
{
String msg = message.getData().getString("MyString");
String serv_msg = message.getData().getString("FromService");
Toast.makeText(getApplicationContext(), msg+serv_msg,
Toast.LENGTH_SHORT).show();
}
}
final Messenger myMessenger = new Messenger(new LocalHandler());

现在我想在任何特定时间检查信使的 MessageQueue 中有多少条消息。

我在网上搜索过,但找不到与该主题相关的任何内容。

关于如何获取消息列表/计数的任何线索?

最佳答案

Square 有一篇关于如何监视 Looper 队列的博文:https://corner.squareup.com/2013/12/android-main-thread-2.html

这是他们如何为主要的 Looper 做的:

public class MainLooperSpy {
private final Field messagesField;
private final Field nextField;
private final MessageQueue mainMessageQueue;

public MainLooperSpy() {
try {
Field queueField = Looper.class.getDeclaredField("mQueue");
queueField.setAccessible(true);
messagesField = MessageQueue.class.getDeclaredField("mMessages");
messagesField.setAccessible(true);
nextField = Message.class.getDeclaredField("next");
nextField.setAccessible(true);
Looper mainLooper = Looper.getMainLooper();
mainMessageQueue = (MessageQueue) queueField.get(mainLooper);
} catch (Exception e) {
throw new RuntimeException(e);
}
}

public void dumpQueue() {
try {
Message nextMessage = (Message) messagesField.get(mainMessageQueue);
Log.d("MainLooperSpy", "Begin dumping queue");
dumpMessages(nextMessage);
Log.d("MainLooperSpy", "End dumping queue");
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}

public void dumpMessages(Message message) throws IllegalAccessException {
if (message != null) {
Log.d("MainLooperSpy", message.toString());
Message next = (Message) nextField.get(message);
dumpMessages(next);
}
}
}

关于android - 从 android 中的信使/处理程序获取待处理消息列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19562989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com