- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我对 android 的 AppWidget 机器是如何工作的有点困惑。
我像这样重新实现了 AppWidgetProvider 的构造函数:
public class MyProvider extends AppWidgetProvider {
public MyProvider() {
Log.d("TEST", "Creating...")
}
public void onUpdate(..., int[] appWidgetIds) {
// updating stuff here
}
}
根据我在文档中阅读的内容,我了解到当第一次添加该类型的小部件时,AppWidgetProvider 被实例化一次。如果添加了另一个相同类型的小部件,它将完全由该提供者管理。
但是我才发现不是这样的!
对于我添加的每个小部件,android 都会创建一个新的 MyProvider(我从“adb logcat”中看到它 - 它会为每个小部件打印“正在创建...”)!我不明白为什么 :)也许我做错了什么?或者文档在某些方面不清楚。如果每个提供者只管理一个小部件,将 appWidgetIds 传递给 onUpdate 和其他方法的原因是什么?
最佳答案
AppWidgetProvider
是 BroadcastReceiver
的子类。引用 BroadcastReceiver
documentation :
A BroadcastReceiver object is only valid for the duration of the call to onReceive(Context, Intent). Once your code returns from this function, the system considers the object to be finished and no longer active.
因此,AppWidgetProviders
是一次性的,应该这样对待。每个应用小部件操作(更新等)都会导致创建、使用和丢弃提供程序。
关于android - 为什么每次添加应用程序小部件时都会创建 AppWidgetProvider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3246627/
在我的应用程序中,我必须使用 HomeScreenWidget。每 2 分钟它应该更新其内容。所以我尝试了以下步骤 i) 创建 AppWidgetProvider 类 public class Mai
我正在关注这个 http://www.vogella.com/articles/AndroidWidgets/article.html教程。 这是我的 Widetprovider: import ja
我有一个小部件,可以显示从 Internet 获取的一些数据。我可能在屏幕上看到多个小部件,每个小部件都显示一些数据,部分数据与其他小部件相同。 有时我会从互联网上重新获取数据并更新小部件 View
我最近发现,在我重命名扩展 AppWidgetProvider 的类(作为代码整理的一部分)并安装修改后的应用程序后,现有的小部件会中断,只显示“问题加载小部件”。 向主屏幕添加一个新的小部件效果很好
我被困在一个特定的场景中。我需要在用户从应用程序更新时间后立即更新我的小部件。我确实通过 Intent Extras 发送数据来尝试广播,但没有成功。目前,我的数据在 AppWidgetProvide
我对 android 的 AppWidget 机器是如何工作的有点困惑。 我像这样重新实现了 AppWidgetProvider 的构造函数: public class MyProvider exte
有没有一种简单的方法可以获取我的应用程序包中的 AppWidgetProviders 列表?我想遍历它们并在运行时检查来自它们相应的 AppWidgetProviderInfo 对象的一些数据。 最佳
我的应用程序有一个 1*4 图标大小的小部件。当用户尝试添加一个小部件时,我会提供一个配置屏幕。并收集了一些数据 - 它由服务器验证 - 它以 appWidgetID 作为键添加到本地数据库 - 一切
我的小部件应该在每天 0:00 刷新它的 TextView 。在 widget_provider.xml 中我设置了 android:updatePeriodMillis="1000" 但我读到最短更
我正在尝试将我的 Widget 连接到应用程序的数据库,但我什么都不懂。 为什么这有效: import android.app.Activity; public class Widgets1 exte
我构建了一个包含 ImageButton 的小部件。 如何从 AppWidgetProvider 访问图像按钮并在其上添加点击监听器(例如,更改按钮的颜色)? 在 Activity 中,我只使用 fi
根据AppWidgetProvider中关于onAppWidgetOptionsChanged的文档:“当第一次放置小部件时以及调整小部件大小时都会调用它。” 但是,当我将我的小部件放在 Androi
场景 1: 设备已加载 我添加第一个小部件 OneX -> 调用启用 | Galaxy Tab -> 不调用 onEnabled。 场景 2: 设备已启动,小部件已显示在屏幕上。 OneX -> 调用
我已经为主屏幕构建了一个小部件,并在我的 AppWidgetProvider 类中声明了一些变量。这些变量是整数和 boolean 值。 我遇到的问题(它基本上是一个 Java 编程问题)是我分配给变
我在 android 中创建小部件。我们通过 AppWidgetProvider 类中的 Intent 调用 Activity 。但是在AppWidgetProvider类中调用Fragments的方
我有一个关于 AppWidgetProvider 的问题。当手机启动时,AppWidgetProvider 的 onUpdate() 方法被连续调用四次,所有调用都包含相同的 appWidgetId。
我有一个简单的小部件,按下时会播放声音文件。现在,我在 onRecieve 方法中有以下代码: @Override public void onReceive(Context context, Int
我的 Android 小部件未更新日期。 这是一个只有日期的小部件,没有更多。 package com.android.widget; import java.util.Timer; import j
之前已经讨论过这个问题,但解决方案似乎不适用于我的问题。 我创建了一个 Android 小部件。我正在使用 android 2.0。 当接收到某个 Intent 并且几乎一切正常时,Widget 应该
我还是 android 的新手,所以这可能是一个非常简单的问题,谢谢。 我构建了一个目前仅支持 android 3.1+ 的小部件,因为它可以调整大小,现在我想让它也支持早期的 android 版本。
我是一名优秀的程序员,十分优秀!