gpt4 book ai didi

android - 接收方未注册异常错误?

转载 作者:IT老高 更新时间:2023-10-28 13:03:56 25 4
gpt4 key购买 nike

在我的开发者控制台中,人们不断报告我无法在我拥有的任何手机上重现的错误。一个人留言说他在尝试打开我的电池服务的设置屏幕时得到了它。从错误中可以看出,接收者未注册。

java.lang.RuntimeException: Unable to stop service .BatteryService@4616d688:  java.lang.IllegalArgumentException: Receiver not registered: com.app.notifyme.BatteryService$BatteryNotifyReceiver@4616d9d0
at android.app.ActivityThread.handleStopService(ActivityThread.java:3164)
at android.app.ActivityThread.access$3900(ActivityThread.java:129)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2173)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4701)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: Receiver not registered:com..BatteryService$BatteryNotifyReceiver@4616d9d0
at android.app.ActivityThread$PackageInfo.forgetReceiverDispatcher(ActivityThread.java:805)
at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:859)
at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:331)
at com.app.notifyme.BatteryService.onDestroy(BatteryService.java:128)
at android.app.ActivityThread.handleStopService(ActivityThread.java:3150)

我的注册是在我的 onCreate 中

@Override
public void onCreate(){
super.onCreate();
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
filter.addAction(Intent.ACTION_POWER_CONNECTED);
filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
registerReceiver(batteryNotifyReceiver,filter);
pref.registerOnSharedPreferenceChangeListener(this);
}

在 onDestroy 和偏好监听器中取消注册

    @Override
public void onDestroy(){
super.onDestroy();
unregisterReceiver(batteryNotifyReceiver);

}

这是我在服务中的接收器

private final class BatteryNotifyReceiver extends BroadcastReceiver {

boolean connected;
@Override
public void onReceive(Context context, Intent intent) {

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor edit = prefs.edit();

updatePreferences(prefs);

level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);



if(intent.getAction().equals(Intent.ACTION_POWER_CONNECTED)){
connected = true;
}else if(intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED)){
connected = false;
}else if(intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)){

if(level < lastLevel){
if(level > 40){
edit.putBoolean("first", false).commit();
edit.putBoolean("second", false).commit();
edit.putBoolean("third", false).commit();
edit.putBoolean("fourth",false).commit();
edit.putBoolean("fifth", false).commit();
}
if(level == 40){
if(!first){
notification(context,battColor,battBlink,battVib,battSound);

edit.putBoolean("first", true).commit();
}
}else if(level == 30){
if(!second){
notification(context,battColor,battBlink,battVib,battSound);

edit.putBoolean("second", true).commit();
}
}else if(level == 20){
if(!third){
notification(context,battColor,battBlink,battVib,battSound);

edit.putBoolean("third", true).commit();
}
}else if(level == 15){
if(!fourth){
notification(context,battColor,battBlink,battVib,battSound);

edit.putBoolean("fourth", true).commit();
}
}else if(level == 5){
if(!fifth){
notification(context,battColor,battBlink,battVib,battSound);

edit.putBoolean("fifth", true).commit();
}
}
lastLevel = temp;
}
}

Intent i = new Intent(context,BatteryNotifyReceiver.class);
context.startService(i);
}
}

知道他们为什么会收到这个错误吗?

最佳答案

你的问题的根源在这里:

 unregisterReceiver(batteryNotifyReceiver);

如果接收器已经取消注册(可能在您未包含在本文中的代码中)或未注册,则调用 unregisterReceiver 将引发 IllegalArgumentException。在您的情况下,您只需为此异常添加特殊的 try/catch 并忽略它(假设您不能或不想控制在同一接收器上调用 unregisterReceiver 的次数)。

关于android - 接收方未注册异常错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6165070/

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