我正在努力确保我在我的动态壁纸中使用最有效/最合适的代码。目前,如果我有任何定期动作,我只需使用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个runnables使用更少的资源,对吗?
为了澄清,我有多个动作(2个或更多)需要定期执行,但不一定都是同一个延迟。是否最好创建一个最短延迟的runnable然后只使用它作为一个中心线程来执行X个循环后的其他操作?
答案 0 :(得分:0)
为什么不使用时间函数对间隔进行建模?如果您有两个操作,并且想要使用定义的时间段之间切换。
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
有许多简单的方法可以改变数学,这将允许您控制状态的数量,状态之间切换的顺序,以及每个状态在每个状态中花费的比例。