android – 定期执行动作的最佳方式[正在运行应用程序] – 处理程序?

前端之家收集整理的这篇文章主要介绍了android – 定期执行动作的最佳方式[正在运行应用程序] – 处理程序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图定期执行一个动作.我想创建一个类的新实例,比如说,3秒.最好通过使用Handler或Thread实现这一点吗?有没有一种更容易,多样的方式我可以尝试?我真的不善于使用线程 – 我想学习,但更重要的是让我在这个功能之前,担心好的编程实践.
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.这将创建一个新的线程,在完成后向UI发送消息,因此您可以使用定期功能的新结果更新UI.

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

-tjw

猜你在找的Android相关文章