【问题标题】:Connectivity broadcastReceiver calls Application's onCreate method连接broadcastReceiver调用Application的onCreate方法
【发布时间】:2016-04-01 07:17:17
【问题描述】:

在我的应用程序上,我正在对应用程序的 onCreate 方法进行设置(包括调用我们的服务器)。另一方面,我们使用广播接收器来获取连接的变化。一切似乎都工作正常,但是,如果我们终止应用程序,然后连接发生变化,则调用应用程序的 onCreate 方法,这会导致对我们的服务器的调用不应该完成。这是正常行为吗?我们如何避免在连接更改时调用 onCreate 方法?

连接广播接收器在 AndroidManifest 中是这样配置的:

<receiver android:name="x.ConnectivityReceiver" android:label="ConnectivityReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

提前致谢。

【问题讨论】:

    标签: android android-lifecycle android-broadcastreceiver android-applicationinfo


    【解决方案1】:

    这是正常行为,因为您的应用程序是为您的BroadcastReceiver 启动(创建)的。防止onCreate 被调用的唯一方法是删除您的BroadcastReceiver
    您可以在您的应用程序类或活动中动态注册您的接收器,而不是在清单中。我不知道这是否适合您的需求

    【讨论】:

    • 感谢您的回答。然后我想我将不得不在我的应用程序类中注册广播。但是这样的话,就永远不会注销了,会不会有问题?
    • 您可以在onTerminate 或其他地方取消注册。如果您不取消注册并且您的应用程序已完成,您将在 logcat 中看到一个堆栈跟踪,说明接收器泄漏。但是,我相信这不是一个致命的例外
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    相关资源
    最近更新 更多