Android 谁能告诉我为什么在logcat中出现这个错误?

Android 谁能告诉我为什么在logcat中出现这个错误?,android,android-logcat,Android,Android Logcat,我是一个Android新手。请告诉我下面的日志猫错误是什么意思,我如何摆脱它?在我的应用程序中,我正在阻止不需要的呼叫。当我在使用我的应用程序时按下backbutton时,我会收到此错误。请帮忙 05-18 16:58:32.614: E/ActivityThread(3265): Activity com.deepthi.blockmycalls.BlockMyCallsActivity has leaked IntentReceiver com.deepthi.blockmycalls.Bl

我是一个Android新手。请告诉我下面的日志猫错误是什么意思,我如何摆脱它?在我的应用程序中,我正在阻止不需要的呼叫。当我在使用我的应用程序时按下backbutton时,我会收到此错误。请帮忙

05-18 16:58:32.614: E/ActivityThread(3265): Activity com.deepthi.blockmycalls.BlockMyCallsActivity has leaked IntentReceiver com.deepthi.blockmycalls.BlockMyCallsActivity$1@44f03d18 that was originally registered here. Are you missing a call to unregisterReceiver()?
05-18 16:58:32.614: E/ActivityThread(3265): android.app.IntentReceiverLeaked: Activity com.deepthi.blockmycalls.BlockMyCallsActivity has leaked IntentReceiver com.deepthi.blockmycalls.BlockMyCallsActivity$1@44f03d18 that was originally registered here. Are you missing a call to unregisterReceiver()?
05-18 16:58:32.614: E/ActivityThread(3265):     at android.app.ActivityThread$PackageInfo$ReceiverDispatcher.<init>(ActivityThread.java:939)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.app.ActivityThread$PackageInfo.getReceiverDispatcher(ActivityThread.java:734)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:791)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.app.ContextImpl.registerReceiver(ContextImpl.java:778)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.app.ContextImpl.registerReceiver(ContextImpl.java:772)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:318)
05-18 16:58:32.614: E/ActivityThread(3265):     at com.deepthi.blockmycalls.BlockMyCallsActivity.onCheckedChanged(BlockMyCallsActivity.java:155)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.widget.CompoundButton.setChecked(CompoundButton.java:124)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.widget.CompoundButton.toggle(CompoundButton.java:86)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.widget.CompoundButton.performClick(CompoundButton.java:98)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.view.View$PerformClick.run(View.java:8816)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.os.Handler.handleCallback(Handler.java:587)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.os.Looper.loop(Looper.java:123)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.app.ActivityThread.main(ActivityThread.java:4627)
05-18 16:58:32.614: E/ActivityThread(3265):     at java.lang.reflect.Method.invokeNative(Native Method)
05-18 16:58:32.614: E/ActivityThread(3265):     at java.lang.reflect.Method.invoke(Method.java:521)
05-18 16:58:32.614: E/ActivityThread(3265):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-18 16:58:32.614: E/ActivityThread(3265):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-18 16:58:32.614: E/ActivityThread(3265):     at dalvik.system.NativeStart.main(Native Method)
05-18 16:58:32.614: E/ActivityThread(3265): Activity com.deepthi.blockmycalls.BlockMyCallsActivity has leaked IntentReceiver com.deepthi.blockmycalls.BlockMyCallsActivity$1@44efa3a8 that was originally registered here. Are you missing a call to unregisterReceiver()?
05-18 16:58:32.614: E/ActivityThread(3265): android.app.IntentReceiverLeaked: Activity com.deepthi.blockmycalls.BlockMyCallsActivity has leaked IntentReceiver com.deepthi.blockmycalls.BlockMyCallsActivity$1@44efa3a8 that was originally registered here. Are you missing a call to unregisterReceiver()?
05-18 16:58:32.614: E/ActivityThread(3265):     at android.app.ActivityThread$PackageInfo$ReceiverDispatcher.<init>(ActivityThread.java:939)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.app.ActivityThread$PackageInfo.getReceiverDispatcher(ActivityThread.java:734)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:791)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.app.ContextImpl.registerReceiver(ContextImpl.java:778)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.app.ContextImpl.registerReceiver(ContextImpl.java:772)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:318)
05-18 16:58:32.614: E/ActivityThread(3265):     at com.deepthi.blockmycalls.BlockMyCallsActivity.onCheckedChanged(BlockMyCallsActivity.java:155)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.widget.CompoundButton.setChecked(CompoundButton.java:124)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.widget.CompoundButton.toggle(CompoundButton.java:86)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.widget.CompoundButton.performClick(CompoundButton.java:98)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.view.View$PerformClick.run(View.java:8816)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.os.Handler.handleCallback(Handler.java:587)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.os.Looper.loop(Looper.java:123)
05-18 16:58:32.614: E/ActivityThread(3265):     at android.app.ActivityThread.main(ActivityThread.java:4627)
05-18 16:58:32.614: E/ActivityThread(3265):     at java.lang.reflect.Method.invokeNative(Native Method)
05-18 16:58:32.614: E/ActivityThread(3265):     at java.lang.reflect.Method.invoke(Method.java:521)
05-18 16:58:32.614: E/ActivityThread(3265):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-18 16:58:32.614: E/ActivityThread(3265):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-18 16:58:32.614: E/ActivityThread(3265):     at dalvik.system.NativeStart.main(Native Method)
05-18 16:59:55.812: D/dalvikvm(3265): GC_EXPLICIT freed 4770 objects / 267120 bytes in 592ms
注销:

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    unregisterReceiver(CallBlocker);
    this.finish();
        Toast.makeText(getApplicationContext(), "text", Toast.LENGTH_LONG).show();
        }

除非我按下后退按钮,否则一切正常。

是的,您有一个资源,您不会释放/取消注册
需要更多特定的代码

您没有显示代码,因此这只是猜测

线索如下:

05-18 16:58:32.614:E/ActivityThread(3265):Activity com.deepthi.blockmycalls.blockmycalls活动已泄漏IntentReceiver com.deepthi.blockmycalls.blockmycalls活动$1@44efa3a8原来是在这里注册的。是否缺少对unregisterReceiver()的调用

您是否在活动结束后注销收件人

@Override
protected void onPause(){

    super.onPause();

    if (myMessageReceiver != null){
        unregisterReceiver(myMessageReceiver );
        myMessageReceiver = null;
    }
}

如果您可以发布您的代码,可能会更容易帮助您,但您似乎注册了两次接收器。

您有注册接收器,但我认为您忘记了取消注册该接收器。。请取消注册…我已经取消注册了我的接收器..@user1362681-只是一个样式点-在Java中,始终以小写字母开始变量。大写的名称通常是为类型保留的。问题是,只有在您的活动
finish()
时才会调用
ondestry()
。在不了解您的设计的情况下,
onPause()
onStop()
可能是更好的选择。感谢您的回复。我只注册一次。我已经用代码更新了我的问题..@user1362681我仍然认为你在注销之前注册了两次。也许当你们按下一次检查按钮后,会再次呼叫更改。尝试设置断点并调试应用程序。@gutiory添加了投票,因为我认为当有人进来投票否决我们时,当我们试图解释而没有看到代码时,这是一种耻辱。“我也是这样。”安德斯梅特尼克,谢谢。我只是想帮忙。不管怎样,你有什么解决办法吗?@guitiory:没有,我仍然面临这个问题..:(梅特尼克:谢谢你的回答。我刚刚注意到你的答案被某人否决了。所以我的一个向上投票作为一个相关的猜测对我没有任何帮助。我已经用我的代码更新了我的问题。请帮助:(我想我会对你的情况做一些完全不同的事情。我不知道,也许只是我,明白你为什么要用代码编写广播节目。用xml添加广播节目更安全、更容易。哪个android也告诉你最好。
@Override
protected void onPause(){

    super.onPause();

    if (myMessageReceiver != null){
        unregisterReceiver(myMessageReceiver );
        myMessageReceiver = null;
    }
}