首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >制作一个每6-8秒改变内容的小工具的正确方法是什么,Android

制作一个每6-8秒改变内容的小工具的正确方法是什么,Android
EN

Stack Overflow用户
提问于 2010-09-24 04:41:19
回答 2查看 490关注 0票数 3

我想要完成的最接近的例子是"Engadget“小部件。它每5-10分钟更新一次互联网上的数据,每5-7秒“滚动”一次故事。我想它为widget's provider设置了5 -10分钟的间隔来调用onUpdate,而没有内置的限制,就像这样。

代码语言:javascript
复制
AlarmManager alarms = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarms.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), updateRateSeconds * 1000, newPending); 

然后真正的问题是..在不调用onUpdate的情况下更新小部件内容。

在这里,我想象一下,在小部件提供程序内部存在一个计时器或Runnable,每次调用它时,它都会用类似的东西重新调度自己

代码语言:javascript
复制
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {
...

    mHandler.removeCallbacks(mUpdateTimeTask);
    mHandler.postDelayed(mUpdateTimeTask, 1000);
}

代码语言:javascript
复制
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中的小部件提供程序

I removeCallbacks mHandler.removeCallbacks(mUpdateTimeTask);

这个计划有什么问题吗?我是否需要创建一个服务来从那里更新小部件,并在不为小部件的配置设置AlarmManager的情况下保持它的活动状态?由于某些原因,我在onUpdate上得到了双重调用,并且在我删除小部件后,runnable仍在运行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-24 06:13:10

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

票数 1
EN

Stack Overflow用户

发布于 2010-12-14 05:19:05

任何持续运行(例如,mp3播放器或无线电)或需要某种形式的轮询(警报,所以显示窗口小部件,天气错误)的东西都应该作为服务编写。我知道这是旧的,但请查看这些视频,了解有关最佳实践的更多信息

http://developer.android.com/videos/index.html#v=M1ZBjlCRfz0

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3782389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档