1
我有科尔多瓦应用程序与插件本地通知。问题在于,cancelAll()
不会等到它完成,因此在我添加新消息时它仍在删除。Android本地通知科尔多瓦:等待取消所有完成
如何同步线程以使cancelAll()
等待?
一些相关的代码AlarmHelper::cancelAll()
/**
* @see LocalNotification#cancelAllNotifications()
*/
public boolean cancelAll(SharedPreferences alarmSettings) {
final Map<String, ?> allAlarms = alarmSettings.getAll();
final Set<String> alarmIds = allAlarms.keySet();
for (String alarmId : alarmIds) {
Log.d(LocalNotification.PLUGIN_NAME, "Canceling notification with id: " + alarmId);
String alarmInt = alarmId;
cancelAlarm(alarmInt);
}
return true;
}
向用户显示的只有一条或两条消息,其他人预定在将来出现。有时候这些未来的日期会发生变化,需要删除。从JavaScript我没有访问真正的列表,因此我更容易删除和重新创建它们。无论如何,我不相信这是不可能的。在xcode中很容易解决[类似问题](http://stackoverflow.com/questions/14731111/only-first-object-of-nsmutablearray-is-stored-in-nsuserdefaults)。 – PiTheNumber 2013-02-19 15:55:41
@PiTheNumber:“无论如何,我不相信这是不可能的” - 你也欢迎相信这个世界是平坦的。通知是在操作系统进程中处理的,与您的请求异步显示或删除它们,并且您可以做的任何事情都不会改变创建您自己的Android版本的情况。 – CommonsWare 2013-02-19 16:00:04
您可以同步资源访问的多线程语言并没有什么意义。是的,资源由OS处理,但我可以同步我的图层。像[ReentrantLock](http://stackoverflow.com/questions/3392139/thread-synchronization-java)或[Synchronized Methods](http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth)。 HTML)可能会工作... – PiTheNumber 2013-02-19 16:30:42