我正在创建一个需要在特定时间间隔内更新的appwidget
。我为此使用了AlarmManager
。
我想让警报在onUpdate()
中运行AppWidgetProvider
方法。
//Create the intent
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
//Schedule the alarm
AlarmManager manager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
manager.setRepeating(AlarmManager.RTC, startAlarmCal.getTime().getTime(), 1000 * 60, pendingIntent);
但是,此意图会导致所有窗口小部件更新。我想以某种方式只将这个意图发送到我自己的appwidget。我该怎么做?
答案 0 :(得分:6)
使用自定义Intent发送到您的小部件。您可以在manifest.xml中注册它们。如果您有许多不同的窗口小部件ID,则无法更新特定窗口小部件ID,但不能更新。
<receiver
android:name=".widget.WidgetProvider"
android:label="1x1">
<service
android:name=".extra.WidgetProvider$WidgetUpdateService1x1" />
<intent-filter>
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action
android:name="nitro.blub.APPWIDGET_MANUEL_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
答案 1 :(得分:0)
您可以尝试添加此内容(稍加修改以满足您的需求):
// Change the text in the widget
RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.main);
ComponentName thisWidget = new ComponentName(context, [Calling_class].class);
// Run update code here. e.g: //////////////
updateViews.setTextViewText(R.id.text, now);
////////////////////////////////////////////
appWidgetManager.updateAppWidget(thisWidget, updateViews);
希望这有帮助。
答案 2 :(得分:-1)
再次it's all in the documentation:
updatePeriodMillis此AppWidget要更新的频率(以毫秒为单位)