gpt4 book ai didi

android - [在应用程序运行时] 定期执行操作的最佳方式 - 处理程序?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:55:16 26 4
gpt4 key购买 nike

我正在尝试定期执行操作。我想在 3 秒后创建一个类的新实例。最好使用处理程序或线程来实现它吗?我可以尝试一种更简单、有点愚蠢的方法吗?我真的不擅长使用线程——我想学习,但更重要的是在担心良好的编程实践之前让它发挥作用。

    new Thread(){
public void run(){
//makes sure the player still has 3 lives left
while(game == false){
uiCallback.sendEmptyMessage(0);
try {
Thread.sleep(2000); // wait two seconds before drawing the next flower
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //sleep for 2 seconds
}
}
}.start();

最佳答案

我在我的 Android 应用程序中做类似的事情;我每 10 秒更新一次界面中的一些数据。有很多方法可以做到这一点,但我选择使用 Handler,因为它实现起来非常简单:

Thread timer = new Thread() {
public void run () {
for (;;) {
// do stuff in a separate thread
uiCallback.sendEmptyMessage(0);
Thread.sleep(3000); // sleep for 3 seconds
}
}
});
timer.start();
...
private Handler uiCallback = new Handler () {
public void handleMessage (Message msg) {
// do stuff with UI
}
};

您可能知道,您不能在 UI 线程中运行这样的周期性函数,因为它会阻塞 UI。这将创建一个新的 Thread,它会在完成时向 UI 发送消息,因此您可以使用周期函数执行的任何新结果来更新 UI。

如果您不需要使用此周期性函数的结果更新 UI,您可以简单地忽略我的代码示例的后半部分,只生成一个新的 Thread,如图所示。但是请注意:如果您要修改由这个新的 Thread 和 UI 共享的变量,如果您不同步,就会遇到问题。一般来说,线程不是您想要忽略“良好编程实践”的领域,因为您会遇到奇怪的、不可预测的错误,并且您会诅咒您的程序。

-tjw

关于android - [在应用程序运行时] 定期执行操作的最佳方式 - 处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5452394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com