android try / catch执行序列

时间:2016-09-18 04:58:09

标签: android android-handler

我想要实现的是点击,应用程序显示祝酒消息" TEXT1",并一直显示TEXT1,直到以随机间隔/延迟完成其他函数调用20次。调用函数后,显示toast message" TEXT2"。我的问题:在app完成函数调用之前,TEXT1才会显示。和TEXT1保持执行20次函数调用所需的时间,然后TEXT2出现。我的代码:

public void onClick(View v) {
    switch (v.getId()) {
        case R.id.example:
                Toast.makeText(getBaseContext(),"Please wait until finish",Toast.LENGTH_SHORT).show();
                int i = 0;
                while (i <= 19 ){

                    int delay = new Random().nextInt(5000);
                    try {
                            Thread.sleep(delay);
                        } catch(InterruptedException ex) {
                            Thread.currentThread().interrupt();
                        }
                    //some function here
                    i++;
                }
                Toast.makeText(getBaseContext(),"Finished",Toast.LENGTH_SHORT).show();
                break;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

永远不会阻止UI线程!

所有用户界面操作都在UI线程中处理。如果使用update_spec调用阻止UI线程,则会发生ANR(应用程序无响应)。此外,Thread.sleep永远不是创建计时器的正确方法,除非您正在编写工作线程的核心心跳。

相反,您应该使用Thread.sleep

Handler.postDelayed

编辑:OP想要使用这样的东西。 https://gist.github.com/SOF3/07c3c110aa214fcdd752e95573b7076f

另见: