我想完成的最接近的例子是“Engadget”小部件。 它每5-10分钟更新一次来自互联网的数据,并每隔5-7秒“滚动”一次故事。 我想象它设置5-10分钟间隔的widget's provider
调用的onUpdate没有inbuild限制,类似的东西..什么是正确的方式来创建一个小部件,每6-8秒更换一次内容,Android
AlarmManager alarms = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarms.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), updateRateSeconds * 1000, newPending);
那么真正的问题..不必呼叫的onUpdate更新小窗口的内容。
在这里,我成像,该控件提供者内部存在一个定时器或一个Runnable是每次得到它的把它称为重新安排自己喜欢的东西是
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
...
mHandler.removeCallbacks(mUpdateTimeTask);
mHandler.postDelayed(mUpdateTimeTask, 1000);
}
。
private Runnable mUpdateTimeTask = new Runnable() {
public void run() {
final long start = mStartTime;
long millis = SystemClock.uptimeMillis() - start;
int seconds = (int) (millis/1000);
int minutes = seconds/60;
seconds = seconds % 60;
...
mHandler.postAtTime(this,start + (((minutes * 60) + seconds + 1) * 1000));
}
然后在里面 onDeleted
和onDisabled
控件提供者我removeCallbacks mHandler.removeCallbacks(mUpdateTimeTask);
这有什么不对的计划呢? 我是否需要提供服务才能从那里更新小部件并保持活动状态,而不将AlarmManager
设置为小部件的配置? 由于某种原因,我在onUpdate
上拨打了双倍电话,在删除小部件后,runnable继续运行。
更多信息运行,在一个小部件发送一个广播,该控件听 – Falmarri 2010-09-23 20:47:16