gpt4 book ai didi

android - 奇怪的 "Receiver not registered"异常

转载 作者:IT老高 更新时间:2023-10-28 22:26:14 32 4
gpt4 key购买 nike

在 onResume() 中我会这样做:

registerReceiver(timeTickReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));

在 onPause() 中:

unregisterReceiver(timeTickReceiver);

我在 Android 开发者控制台中看到“java.lang.IllegalArgumentException: Receiver not registered”报告(只有 2 份报告,我的应用有数千名用户)。异常由 unregisterReceiver() 触发。会发生什么?只是用 try-catch 包围它,我觉得不是很有信心。

最佳答案

我们在长按特定屏幕,然后立即进行两次方向更改(例如,将设备倒置)时看到了此错误。

unregisterReceiver 的 API 文档说:

Unregister a previously registered BroadcastReceiver.

它没有明确说明,但正如您所见,如果它尚未注册,您会点击 IllegalArgumentException: Receiver not registered

我使用的解决方法是将我的 Receiver 存储为成员字段,并在未注册时将其设置为 null,即我将其初始化为 null,然后仅在我注册时设置它。这可能并不完美,但它确实解决了我的崩溃问题!

private Receiver mReceiver = null;

来 self 的 onServiceConnected:

sLog.debug("Registering receiver");
mReceiver = new Receiver();
registerReceiver(mReceiver, filter);

来 self 的 onServiceDisconnected:

if (mReceiver == null)
{
sLog.info("Do not unregister receiver as it was never registered");
}
else
{
sLog.debug("Unregister receiver");
unregisterReceiver(mReceiver);
mReceiver = null;
}

关于android - 奇怪的 "Receiver not registered"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4978167/

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