以编程方式注册的广播接收器将存活多长时间?

Ale*_*lic 5 android broadcastreceiver

我想在我的Android应用程序中实现该功能,当我的应用程序支持其国家/地区时,该功能将允许用户接收通知,并且我对如何实现此功能有些疑问。

用例场景如下所示

用户转到活动,在那里他可以看到支持的国家/地区列表。用户所在的国家/地区始终是第一位,如果不支持该用户,则存在一个按钮,用户可以单击该按钮并请求在其国家/地区得到支持时通知您。

一些想法

1.当用户单击按钮时,我将通过registerReceiver()方法注册网络状态已更改的广播接收器。在注册接收器中,我将始终检查用户是否在WiFi上,如果是,请从服务器下载一些字节以检查是否支持用户所在的国家/地区。当获得支持时,我将注销接收器。我对此想法的怀疑是,以编程方式注册的广播接收器将存活多长时间?接收者可能需要居住几个月。如果用户不卸载我的应用程序,那么接收方将一直接收事件吗?

2.在Android Manifest中注册广播接收器,并在通知用户请求时将boolean 应该在SharedPreferences中通知,并在继续进行广播接收器之前始终检查此值。

您是否有任何想法如何优雅而有效地处理此问题?C2DM不适合此解决方案。

谢谢。

Com*_*are 2

我想在我的 Android 应用程序中实现一个功能,该功能允许用户在我的应用程序支持他们的国家/地区时收到通知,但我对如何实现此功能有些疑问。

通常,“我的应用程序支持”意味着对该应用程序的更新。

用户所在的国家/地区始终排在第一位,如果不支持,他可以单击一个按钮,并请求在其国家/地区受到支持时收到通知。

救国于SharedPreferences. 每次更新应用程序后首次启动时,查看该国家/地区是否在受支持的列表中,然后弹出“嘿!现在受支持!” 对话。或者,在紧要关头,注册,如果是您的包裹被替换,请查看您是否支持该国家/地区并在状态栏中ACTION_PACKAGE_REPLACED添加。Notification

当用户单击按钮时,我将通过 registerReceiver() 方法注册网络状态更改的广播接收器。

为什么?

在注册的接收器中,我将始终检查用户是否使用 WiFi,如果是,则从服务器下载一些字节以检查现在是否支持用户所在的国家/地区。

您不需要BroadcastReceiver为此。每当您决定检查更新(例如,每天一次AlarmManager)时,您都可以检查设备是否连接到 WiFi。我不太确定你为什么关心 WiFi,而且我不知道这与更新你的应用程序(通常由 Android 市场处理)有什么关系。

当受到支持时,我将取消注册接收器。

它很久以前就被取消注册了。

我对这个想法的疑问是以编程方式注册的广播接收器会持续多久?也许接收者需要活几个月。

无论用户在屏幕上进行活动多久,它都会存在。您需要在活动暂停之前取消注册接收器。即使您在 Activity 被销毁后故意泄漏接收器(这是一个坏主意),它也会存活几分钟,直到 Android 终止该进程。

在 Android Manifest 中注册广播接收器,当用户请求通知时,将布尔值 shouldBeInformed 放入 SharedPreferences 中,并在广播接收器中继续之前始终检查该值。

为什么?