gpt4 book ai didi

android - 通过 RemoteViews 从服务更新小部件 - 在手机上可以,但不能在模拟器上工作

转载 作者:行者123 更新时间:2023-11-30 04:31:35 25 4
gpt4 key购买 nike

我创建了一个 WidgetProvider 和一个在系统 TIME_TICK 上触发的服务 - 这部分工作正常,日志消息显示该服务工作正常,在实际手机上看起来很棒。

为了更新我的小部件,我使用了这样的代码(为清楚起见进行了编辑,因此可能有错字)

    Log.d("xxx","Updating");
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
views.setTextViewText(R.id.appwidget_text, "Some Text" + System.currentTimeMillis());
ComponentName thisWidget = new ComponentName(context, SWClockWidgetProvider.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(thisWidget, views);

在我的手机(运行 2.2 的 HTC Desire)上它是完美的,Widgets 每分钟都会更新。

在模拟器上(运行 2.2)出现日志消息(例如服务正在运行)但小部件未更新。

现在我在 2 个地方调用该代码 - 从 Provider 的 onUpdate 方法(以便它在 Widget 首次显示时将某些内容放入 Widgets)和从 Service 的监听器(更新它们)

现在这是奇怪的一点——在我的 list 中,我最初是这样声明我的服务的

服务android:name=".SWClockWidgetService"

当我将其更改为明确提及包时(当然与提供者的包相同)

服务android:name="com.somewhatdog.swclockwidget.SWClockWidgetService"

初始更新(从提供者 onUpdate 调用)有效,但来自服务监听器的后续调用仍然无效!?

注意:最初我将服务设为提供者的内部类,但这在手机或模拟器上不起作用 - 不知道这是否相关...

无论如何 - 我很困惑 - 在手机和模拟器上使用相同的 Android - 一个可以工作,一个不能(这意味着至少可以说这在其他设备上工作的可能性很低??)

我有点迷路了 - 任何建议都可以。

附注我已经在运行 1.6 的模拟器上对此进行了测试,没有任何乐趣 - 它可以在运行 2.1r1 和 2.3.3 的模拟器上运行,所以谁知道......

最佳答案

模拟器小部件更新似乎有点不可靠。它有两个已知问题:

  1. updateAppWidget(...) 调用 may only work on emulators that have been restarted at least once .
  2. 同时运行多个模拟器 may interfere with widget updating .

关于android - 通过 RemoteViews 从服务更新小部件 - 在手机上可以,但不能在模拟器上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7620604/

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