gpt4 book ai didi

Android appWidgetProvider onEnabled 从未在平板电脑上调用过

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:32 34 4
gpt4 key购买 nike

场景 1:

  1. 设备已加载
  2. 我添加第一个小部件
  3. OneX -> 调用启用 | Galaxy Tab -> 不调用 onEnabled。

场景 2:

  1. 设备已启动,小部件已显示在屏幕上。
  2. OneX -> 调用启用 | Galaxy 选项卡 -> 调用启用

但是当用户将一个放在屏幕上时(场景 1)必须调用它,否则有什么意义。当然,您不必重新启动设备即可调用 onEnabled。

这很重要,因为我附加了一个警报管理器以每 2 秒更新一次我的小部件:

    AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 1);
alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), 1000, createClockTickIntent(context));

有一个没有有效解决方案的类似问题:AppWidgetProvider: not called onEnabled method

没有必要注册这些 Intent ,这样做也无济于事。

我的问题是为什么 onEnabled 没有调用,我该如何调用它。

谷歌文档上说:ACTION_APPWIDGET_ENABLED:

Sent when an instance of an AppWidget is added to a host for the first time. This broadcast is sent at boot time if there is a AppWidgetHost installed with an instance for this provider.

基本确认它应该在两种情况下都有效

这是触发onEnabled()

的 Intent

Called in response to the ACTION_APPWIDGET_ENABLED broadcast when the a AppWidget for this provider is instantiated. Override this method to implement your own AppWidget functionality.

它适用于手机而非平板电脑,这一点很奇怪。这是 android 3.2 的问题吗?有解决方法吗?

最佳答案

在多次尝试找出它为何如此行事之后,我想出了个办法。

它要么是 android 相关问题,要么是设备相关问题,widget enabled broadcast 永远不会发送。

通过警报管理器更新小部件的唯一解决方法是从警报管理器自己的方法中初始化它,然后从 onEnabledonUpdate 中调用它。因此,当它未达到 onEnabled 时,它将被 onUpdate 覆盖,当小部件开始更新自身(在应用程序调用它时)。在 onEnabled 确实有效的情况下,它只会在调用 onUpdate 时用新实例替换现有的警报管理器。

这可能不是理想的解决方案,具体取决于您在 onEnabled 中尝试执行的操作,但这是我能找到的唯一解决方案。

关于Android appWidgetProvider onEnabled 从未在平板电脑上调用过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12642754/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com