我希望在我的 Android 应用程序中使用本地通知,并且想知道 Android 是否有类似 iOS 的 UILocalNotification
可用的东西?
我喜欢 UILocalNotification
允许我为 future 某个日期“安排”一个或多个本地通知,无论手机是醒着还是睡着,这些都会触发(就像常规推送通知一样) .
在我弄乱 AlarmManager
之前,我想知道 Android 是否有一个干净的方法来完成这个。
编辑:什么是 UILocalNotification
?
UILocalNotification 的实例表示应用程序可以安排在特定日期和时间向其用户呈现的通知。操作系统负责在适当的时间传递通知;应用程序不一定要运行才能发生这种情况。尽管本地通知类似于远程通知,因为它们用于显示警报、播放声音和标记应用程序图标,但它们是在本地编写和传递的,不需要与远程服务器连接。
考虑到您的基于时间的触发要求,AlarmManager
似乎是合适的解决方案(可提供专门的培训 here)。您应该谨慎使用它,因为警报会在设备关闭时被清除。因此,您应该在设备重新启动时重新安排警报。您可以使用在 list 中声明的 BroadcastReceiver 来解决这个问题
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
Intent 过滤器。
编辑 (2014.04.19): 更多“Android 相当于 iOS 的 NSNotification?”有针对性的回答
iOS 下通知的其他用途,尤其是 NSNotificationCenter postNotificationNamebject:userInfo:
selector (例如,对于基于事件的策略,例如通知 CoreData 更改),还有其他可用的方法。
也许您可以使用 LocalBroadcastManager支持库中提供的概念。
描述为:
Helper to register for and send broadcasts of Intents to local objects within your process.
我们可以这样使用:
private void sendLocalNotification(){
final Intent intent = new Intent("myLocalNotificationIdentifier");
intent.putExtra("aKey", aValue);
// ...
LocalBroadcastManager.getInstance(aContext).sendBroadcast(intent);
}
然后,您可以在 Activity
中注册给定通知,例如:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("myLocalNotificationIdentifier"));
}
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// specific job according to Intent and its extras...
}
};
否则,您可以使用 Otto Square 提供的库根据 Apache 许可证,版本 2.0。 它被描述为
Otto is an event bus designed to decouple different parts of your application while still allowing them to communicate efficiently.
不过,根据您的要求,您可以使用其他 Android 概念。 例如,如果您想在数据库更改时收到通知(在基于 ContentProvider 概念的项目中),您可以使用:
aContentResolver.registerContentObserver(aContentObserver)
带有方法文档here .
然后 Observer 将通过如下调用调用:
aContentResolver.notifyChange(anUri, null)
带有方法文档here .
关于Android 相当于 iOS 的 UILocalNotification?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22944218/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |