在Activity中,我在onCreate中注册接收器并取消注册onDestroy。如果在下一个onCreate之后每个onCreate后跟onDestroy,它应该可以正常工作。否则,如果onCreate的调用次数超过onDestroy,则接收器会多次注册,并且应用程序会出现错误行为。
所以我的问题是:
答案 0 :(得分:2)
不保证会调用onDestroy:
http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29
“
protected void onDestroy()
在API级别1中添加 在销毁活动之前执行任何最终清理。这可能是因为活动正在完成(有人在其上调用finish(),或者因为系统暂时销毁此活动实例以节省空间。您可以使用isFinishing()方法区分这两种情况。
注意:不要指望将此方法称为保存数据的地方!例如,如果活动正在内容提供程序中编辑数据,则应在onPause()或onSaveInstanceState(Bundle)中提交这些编辑,而不是此处。此方法通常用于释放资源,例如关联的线程使用一个活动,以便在其应用程序的其余部分仍在运行时,被破坏的活动不会留下这些东西。在某些情况下,系统会在不调用此方法(或其他任何方法)的情况下简单地终止活动的托管过程,因此不应该使用它来执行在过程消失后仍然存在的事情。
派生类必须调用超类的此方法的实现。如果他们不这样做,将抛出异常。
“
您可能还想查看此主题:
答案 1 :(得分:1)
onDestroy。或者从后台堆栈中删除,当用户不想要它或没有可能的方法回到它。当你的活动想要接收一个很好的广播来做你自己的方式。如果没有出现对话框,或者收到通知或看到的东西也应该没问题,如果你想要真正安全,并且一次只接收一个活动,并且只有在活动可见时才将这些移动到onResume和onPause。
你可能会在另一个活动被带到前面并重新注册之后如何取消注册?