我想在我的Android应用程序中实现功能,允许用户在我的应用程序支持他们的国家时收到通知,我对如何实现此功能有一些疑问。
通常,“我的应用程序支持”意味着对该应用程序的更新。
用户的国家/地区始终是第一位的,如果不支持,则会有一个按钮,用户可以点击该按钮,并在其国家/地区获得支持时请求通知。
拯救国家 SharedPreferences 。在每次更新应用程序后首次启动时,查看该国家/地区是否在受支持列表中,并弹出“嘿!它现在支持!”对话。或者,在紧要关头,注册 ACTION_PACKAGE_REPLACED ,如果你的包裹被更换了,看看你是否支持这个国家并且放了一个 Notification 在状态栏中。
SharedPreferences
ACTION_PACKAGE_REPLACED
Notification
当用户点击按钮时,我将通过registerReceiver()方法注册网络状态改变的广播接收器。
为什么?
在注册接收器中,我将始终检查用户是否在WiFi上,如果是,请从服务器下载一些字节以检查现在是否支持用户的国家/地区。
你不需要 BroadcastReceiver 为了这。每当您决定检查更新时(例如,每天一次通过 AlarmManager ),您可以检查设备是否在WiFi上。我不太清楚为什么你关心WiFi,我不知道这与更新你的应用程序有什么关系(通常由Android Market处理)。
BroadcastReceiver
AlarmManager
当得到支持时,我将取消注册接收器。
它很久以前就没有注册了。
我对这个想法的疑问是,以编程方式注册的广播接收器能存活多久?也许接收者需要活几个月。
无论用户在屏幕上进行活动,它都会存在很长时间。您需要在活动暂停前取消注册接收器。即使您在活动被破坏后故意泄漏接收器 - 这是一个坏主意 - 它将持续数分钟,直到Android终止该过程。
在Android Manifest中注册广播接收器,当用户请求被通知时,在SharedPreferences中输入boolean shouldBeInformed并始终在继续广播接收器之前检查该值。