- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
由于我使用 AlarmManager
执行定期小部件更新,因此我需要确保 onEnabled
和 onDisabled
能够可靠地工作。
但是,我意识到它们有时不会被触发。我不是唯一面临此问题的人。
Android appWidgetProvider onEnabled never called on tablet
onDisabled
?因为我不希望在删除最后一个小部件后,AlarmManager 仍然被重复触发。 <receiver android:name="org.yccheok.MyAppWidgetProvider"
android:exported="true" >
<intent-filter >
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_ENABLED" />
<action android:name="android.appwidget.action.APPWIDGET_DELETED" />
<action android:name="android.appwidget.action.APPWIDGET_DISABLED" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
public class MyAppWidgetProvider extends AppWidgetProvider {
private static PendingIntent createAlarmUpdatePendingIntent(Context context) {
Intent intent = new Intent(context, JStockAppWidgetProvider.class);
intent.setAction(JStockAppWidgetProvider.ALARM_UPDATE_ACTION);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
return pendingIntent;
}
@Override
public void onEnabled(Context context)
{
super.onEnabled(context);
PendingIntent pendingIntent = createAlarmUpdatePendingIntent(context);
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
int scanSpeed = JStockApplication.instance().getJStockOptions().getScanSpeed();
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + scanSpeed, scanSpeed, pendingIntent);
}
@Override
public void onDisabled(Context context)
{
super.onDisabled(context);
PendingIntent pendingIntent = createAlarmUpdatePendingIntent(context);
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
}
最佳答案
您可以在方法中检查当前正在运行的多个实例。
private boolean hasInstances(Context context) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(
new ComponentName(context, this.getClass()));
return (appWidgetIds.length > 0);
}
关于android - 未调用 AppWidgetProvider 的 onEnabled 和 onDisabled 的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22445176/
在我的应用程序中,我必须使用 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 版本。
我是一名优秀的程序员,十分优秀!