android - 制作每 6-8 秒更改内容的小部件的正确方法是什么,Android

标签 android widget

我想要完成的最接近的示例是“Engadget”小部件。 它每 5-10 分钟从互联网更新一次数据,每 5-7 秒“滚动”一次故事。 我想它将 5 -10 分钟的时间间隔设置为 widget's provider 以在没有内置限制的情况下调用 onUpdate,类似的东西..

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));
}

然后在widget provider里面 onDeletedonDisabled

我 removeCallbacks mHandler.removeCallbacks(mUpdateTimeTask);

这个方案有什么问题吗? 我是否需要提供服务以从那里更新小部件并使其保持 Activity 状态,而无需将 AlarmManager 设置为小部件的配置? 出于某种原因,我在 onUpdate 上收到两次调用,并且在我删除小部件后 runnable 继续运行。

最佳答案

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

关于android - 制作每 6-8 秒更改内容的小部件的正确方法是什么,Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3782389/

相关文章:

android - 如何最大化 Android 小部件尺寸(宽度)?

Python tkinter 标签小部件鼠标悬停

android - Android 中的 WebView 不显示网页样式

android - 通过 DAO 方法返回 Map 对象

html - Android 中 HTML 资源中不同分辨率的不同图像

javascript - 在 Odoo 9 中一次上传多个附件

android - 如何在android中的谷歌地图上绘制默认位置?

java - 在 Eclipse Luna 中将 Volley 库添加到 android 项目

html - 缩放 HTML 元素的最佳方法

javascript - 构建小部件时隐藏 Javascript