我想限制用户能够启动的Widget应用程序的Widget实例数量。 事实上,对于我的情况,只有一个是有意义的。
在Samsung Gear 2设备中,音乐播放器小部件具有我想要的行为。实际上,当您启动此窗口小部件时,它不会再显示在窗口小部件列表中。这将是完美的!
Schedule Widgets也有此行为。 有音乐播放器和Schedule小部件的项目示例,但在示例中,这种情况不会发生。
有什么建议吗?
答案 0 :(得分:0)
我们可以通过添加变量来计算窗口小部件的实例
来以编程方式完成int instance_count =0;
然后在widget实例中创建回调,我们检查变量并在只有一个实例时递增它,如果已经创建了一个实例,则返回错误
static int
_on_create_cb(widget_context_h context, bundle *content, int w, int h, void *user_data) {
if(instance_count >0) return WIDGET_ERROR_ALREADY_EXIST;
instance_count++;
return WIDGET_ERROR_NONE;
}
在destroy回调中,我们递减计数器
static int
_on_destroy_cb(widget_context_h context, widget_app_destroy_type_e reason, bundle *content, void *user_data) {
instance_count--;
return WIDGET_ERROR_NONE;
}
这不是完美的解决方案,因为它仍然允许用户从列表中选择小部件,但它可以工作。 我还测试了故意崩溃应用程序,这个解决方案有效。 当应用程序崩溃时, _on_destroy_cb 未被调用,但 instance_count 无论如何都会重置为0.