【问题标题】:Periodic actions in Live Wallpapers动态壁纸中的周期性动作
【发布时间】:2012-08-02 03:44:38
【问题描述】:

我正在努力确保在我的动态壁纸中使用最有效/最合适的代码。目前,如果我有任何周期性动作,我只需使用 Runnables 重复该动作,然后在它完成后 postDelay 它需要多长时间。

最好只有一个 Runnable,例如 drawFrame Runnable,然后将其用于任何其他周期性操作?

例如:

int interval1 = 0;
int interval2 = 0;
drawFrame(){
  interval1++;
  interval2++;
  if (interval1==repeatInt1){
    interval1 = 0;
    // Periodic action 1
  }
  if (interval2==repeatInt2){
    interval2 = 0;
    // Periodic action 2
  }
// Regular drawFrame code here
}

我认为上述方法会比运行 3 个可运行文件使用更少的资源,对吗?

为了澄清,我有多个动作(2 个或更多)需要定期执行,但不一定都在相同的延迟。最好创建一个延迟最短的可运行对象,然后在 X 次循环后将其用作中心线程来执行其他操作?

【问题讨论】:

    标签: android live-wallpaper


    【解决方案1】:

    为什么不使用时间函数对区间进行建模?如果您有两个操作,并且想要在使用定义的时间段之间切换。

    double period = 1000;
    double time = (double) System.currentTimeMillis();
    if ( Math.sine( 2*Math.PI * time / period) > 0)
      //State 1: do one thing
    else
      //State 2: do the other
    

    有很多简单的方法可以改变数学,让您可以控制状态的数量、在状态之间切换的顺序以及每个时间段在每个状态中花费的部分。

    【讨论】:

    • 我并不是真的想弄清楚如何在动作之间切换,只是我可能有 3 个动作都在不断重复,但间隔不同。我应该创建一个最短间隔 (drawFrame) 的可运行文件,然后将其用作其他两个的计时器吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多