Tizen Native:我如何只有一个Widget实例并且不允许用户创建更多?

时间:2016-11-28 19:54:17

标签: widget tizen tizen-native-app

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

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

我们可以通过添加变量来计算窗口小部件的实例

来以编程方式完成
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.