Android 取消登记未在舱单中声明的广播接收机的必要性

Android 取消登记未在舱单中声明的广播接收机的必要性,android,broadcastreceiver,broadcast,android-broadcast,Android,Broadcastreceiver,Broadcast,Android Broadcast,当我的Android Studio项目的清单文件中没有提到“广播接收器”时,是否有必要注销其注册?后果是什么?参见 如果从活动上下文使用,则将注册接收者 在这项活动中。这意味着您需要注销 在活动完成之前,应将其销毁;事实上如果你不这样做 因此,该框架将在删除时清理泄漏的注册 该活动将被删除,并记录一个错误。因此,如果您使用活动上下文 注册一个静态的接收器(对进程来说是全局的,而不是全局的) 与活动实例关联),则该注册将 无论您使用的活动在哪一点被销毁,都会从您身上删除 因此,如果您将Broadc

当我的Android Studio项目的清单文件中没有提到“广播接收器”时,是否有必要注销其注册?后果是什么?

参见

如果从活动上下文使用,则将注册接收者 在这项活动中。这意味着您需要注销 在活动完成之前,应将其销毁;事实上如果你不这样做 因此,该框架将在删除时清理泄漏的注册 该活动将被删除,并记录一个错误。因此,如果您使用活动上下文 注册一个静态的接收器(对进程来说是全局的,而不是全局的) 与活动实例关联),则该注册将 无论您使用的活动在哪一点被销毁,都会从您身上删除

因此,如果您将BroadcaseReceiver与
活动关联,则无需注销它,请参见

如果从活动上下文使用,则将注册接收者 在这项活动中。这意味着您需要注销 在活动完成之前,应将其销毁;事实上如果你不这样做 因此,该框架将在删除时清理泄漏的注册 该活动将被删除,并记录一个错误。因此,如果您使用活动上下文 注册一个静态的接收器(对进程来说是全局的,而不是全局的) 与活动实例关联),则该注册将 无论您使用的活动在哪一点被销毁,都会从您身上删除


因此,如果在
onCreate()中启动了
broadcaseceiver

,则无需将BroadcaseReceiver与
活动关联,也无需注销
方法必须取消注册,这样当您的活动再次启动时,它不会再次启动,从而导致多个
广播接收器

如果您的
BroadcastReceiver
是在
onCreate()
方法中启动的,则必须取消注册,以便当您的活动再次启动时,它不会再次启动,从而导致多个
BroadcastReceiver

但是,我认为最好在活动被销毁之前以编程方式注销它,尽管根据您的解释,BroadcastReceiver在上下文活动被销毁时被注销:)是的,通常这样做更好。我们只是不需要这样做,但我认为最好在活动被销毁之前以编程方式注销它,尽管根据您的解释,BroadcastReceiver在上下文活动被销毁时被注销:)是的,通常这样做更好。我们不必这样做,但是,如果我在“onCreate()”中注册它,那么我认为只有重新启动应用程序才能再次调用“onCreate()”函数。。。。。因此,在这种情况下,将不会有多个“广播接收器”,因为前一个将在活动销毁时自动注销。。。。。。。如果未销毁活动,则返回到该活动将调用“onRestart()”->“onStart()”->“onResume()”而不是“onCreate()”。。。。。。。。。我的理解有什么错误吗?没有,上一个不会在
onDestroy()
上被销毁,除非你在代码中提到它。该活动试图清理,但通常会产生错误。这是可能发生的。为了获得最佳效果,请注销它。但是,如果我在“onCreate()”中注册它,那么我认为只有重新启动应用程序才能再次调用“onCreate()”函数。。。。。因此,在这种情况下,将不会有多个“广播接收器”,因为前一个将在活动销毁时自动注销。。。。。。。如果未销毁活动,则返回到该活动将调用“onRestart()”->“onStart()”->“onResume()”而不是“onCreate()”。。。。。。。。。我的理解有什么错误吗?没有,上一个不会在
onDestroy()
上被销毁,除非你在代码中提到它。该活动试图清理,但通常会产生错误。这是可能发生的。为了获得最佳效果,请注销它。