2010-09-23 45 views
3

我想完成的最接近的例子是“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)); 
} 

然后在里面 onDeletedonDisabled

控件提供者我removeCallbacks mHandler.removeCallbacks(mUpdateTimeTask);

这有什么不对的计划呢? 我是否需要提供服务才能从那里更新小部件并保持活动状态,而不将AlarmManager设置为小部件的配置? 由于某种原因,我在onUpdate上拨打了双倍电话,在删除小部件后,runnable继续运行。

+2

更多信息运行,在一个小部件发送一个广播,该控件听 – Falmarri 2010-09-23 20:47:16

回答

1

看看ViewFlipper。您可以使用它为一组项目更新一次数据,然后设置它们循环的频率。

+0

是有可能用户ViewFlipper服务? – weakwire 2010-09-23 22:31:39

+0

是的。 :-) – adamp 2010-09-23 23:01:34

+0

http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout h,我在这里的任何地方都看不到ViewFlipper .. – weakwire 2010-09-23 23:20:57

相关问题