gpt4 book ai didi

Android 处理程序删除发送消息不起作用

转载 作者:行者123 更新时间:2023-11-30 02:08:26 25 4
gpt4 key购买 nike

Android 处理程序从处理程序消息队列中删除之前发送的消息。 记住我不想使用removeCallbacks (Runnable r);

发送广播 Intent
- 发送消息

      Intent i = new Intent(my_action);  
sendBroadcast(i);

- 取消之前的任何消息

Intent i = new Intent(my_action);  
i.putExtra("a","a");
sendBroadcast(i);

public class TestBroadCast extends BroadcastReceiver {

Handler h = new Handler(){
@Override
public void handleMessage(Message msg) {
// Do my stuff
}
};
Message msg = h.obtainMessage();
@Override
public void onReceive(Context context, Intent intent) {

if ("a".equals(intent.getStringExtra("a"))){
// Handle intent to cancel message
msg.what = 1;
h.removeMessages(1);
} else {
// Handle intent to do my stuff
msg.what = 1;
h.sendMessageDelayed(msg, 10000);
}
}
}

但是在此之后 removeMessages 不工作了。

最佳答案

您不能重复使用 Message 我过去曾尝试过但它不起作用,您应该获得一个新的。

删除:

Message msg = h.obtainMessage();

修改:

else { 
// Handle intent to do my stuff
Message msg = h.obtainMessage();
msg.what = 1;
h.sendMessageDelayed(msg, 10000);
}

您还应该使您的 Handler 静态化,我怀疑这就是您出现问题的原因。 BroadcastReceiver 的生命周期可能很短,会在您的处理程序触发之前创建和销毁。

关于Android 处理程序删除发送消息不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30431725/

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