我想限制用户能够启动的 Widget 应用程序的 Widget 实例的数量。事实上,就我而言,拥有一个才有意义。
在三星 Gear 2 设备中,音乐播放器小部件具有我想要的行为。实际上,当您启动此小部件时,它不会再次显示在小部件列表中。这将是完美的!
Schedule Widgets 也有这种行为。有音乐播放器和计划小部件的项目示例,但在示例中不会发生这种行为。
有什么建议么?
我想限制用户能够启动的 Widget 应用程序的 Widget 实例的数量。事实上,就我而言,拥有一个才有意义。
在三星 Gear 2 设备中,音乐播放器小部件具有我想要的行为。实际上,当您启动此小部件时,它不会再次显示在小部件列表中。这将是完美的!
Schedule Widgets 也有这种行为。有音乐播放器和计划小部件的项目示例,但在示例中不会发生这种行为。
有什么建议么?
我们可以通过添加一个变量来计算小部件的实例以编程方式完成
int instance_count =0;
然后在小部件实例创建回调中,我们检查变量并在只有一个实例时增加它,如果已经创建了一个实例则返回错误
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;
}
在销毁回调中,我们递减计数器
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。