Tizen Native:我怎么能只有一个 Widget 实例而不允许用户创建更多?

Tizen Native: How can I have only one Widget Instance and not allow the user to create more?

我想限制用户能够启动我的 Widget 应用程序的 Widget 实例的数量。 事实上,对我来说,只有一个才有意义。

在 Samsung Gear 2 设备中,音乐播放器小部件具有我想要的行为。实际上,当您启动此小部件时,它不会再次显示在小部件列表中。这将是完美的!

日程表小部件也有此行为。 有音乐播放器和日程表小部件的项目示例,但在示例中不会发生这种行为。

有什么建议吗?

我在这里找到了解决方案:https://developer.tizen.org/zh-hans/forums/native-application-development/limit-number-widget?langswitch=zh-hans

我们可以通过添加一个变量来计算小部件的实例,以编程方式完成

int instance_count =0;

然后在小部件实例创建回调中,我们检查变量并在只有一个实例时递增它,如果已经创建了一个实例,则return错误

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;
}

这不是完美的解决方案,因为它仍然允许用户 select 列表中的小部件,但它确实有效。 我还测试了故意让应用程序崩溃,这个解决方案有效。 当应用程序崩溃时,_on_destroy_cb 不会被调用,但 instance_count 无论如何都会重置为 0。