Android 警报框在取消时消失,但又回来闹鬼?

Android 警报框在取消时消失,但又回来闹鬼?,android,multithreading,Android,Multithreading,我想做的就是显示一个1000毫秒的文本,然后得到下一件事。。对话框的弹出速度很慢,所以我使用了文本视图。但它不起作用。。下面给出了代码段。。 我做错了什么 Thread sleep_for_sometime = new Thread() { public void run() { try { correct.setVisibility(TextView.VISIBLE);

我想做的就是显示一个1000毫秒的文本,然后得到下一件事。。对话框的弹出速度很慢,所以我使用了文本视图。但它不起作用。。下面给出了代码段。。 我做错了什么

Thread sleep_for_sometime = new Thread() {
                public void run() {
                    try {
                        correct.setVisibility(TextView.VISIBLE);
                        sleep(1000);
                        correct.setVisibility(TextView.INVISIBLE);

                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    finally {
                        get_question(questionset[i]);
                    }
                }
            };
            //sleep_for_sometime.setDaemon(false);
            sleep_for_sometime.start();

您应该更改UI线程中的可见性。阅读

您应该更改UI线程中的可见性。阅读尼基塔的答案,你可以这样做

private class SleepTask extends AsyncTask<Void,Integer,Void> {

    @Override
    protected Void doInBackground(Void... params) {
        try {
                publishProgress(0);
                sleep(1000);
                publishProgress(1);
            }catch(Exception e){
                //null
                }
    }

    @Override
    protected void onProgressUpdate(Integer... i){
            if(i[0]==0){
                correct.setVisibility(TextView.VISIBLE);
            }else{
                correct.setVisibility(TextView.INVISIBLE);
            }

    }
    @Override
    protected void onPostExecute(Void res) {
            get_question(questionset[i]);
     }

    @Override
    protected void onPreExecute() {
        //do something before execution
    }
}

扩展Nikita的答案,你可以这样做

private class SleepTask extends AsyncTask<Void,Integer,Void> {

    @Override
    protected Void doInBackground(Void... params) {
        try {
                publishProgress(0);
                sleep(1000);
                publishProgress(1);
            }catch(Exception e){
                //null
                }
    }

    @Override
    protected void onProgressUpdate(Integer... i){
            if(i[0]==0){
                correct.setVisibility(TextView.VISIBLE);
            }else{
                correct.setVisibility(TextView.INVISIBLE);
            }

    }
    @Override
    protected void onPostExecute(Void res) {
            get_question(questionset[i]);
     }

    @Override
    protected void onPreExecute() {
        //do something before execution
    }
}

AsyncTask
很棒,但我认为在某些方面使用过度了。只需使用
post
/
postDelayed
。你不是在做后台工作,你只是想推迟一些UI线程的工作。肯定读过Nikita的链接,但我会这样做:

correct.setVisibility(View.VISIBLE);
correct.postDelayed(new Runnable() {
    correct.setVisibility(View.INVISIBLE);
    get_question(questionset[i]);
}, 1000);

AsyncTask
很棒,但我认为在某些方面使用过度了。只需使用
post
/
postDelayed
。你不是在做后台工作,你只是想推迟一些UI线程的工作。肯定读过Nikita的链接,但我会这样做:

correct.setVisibility(View.VISIBLE);
correct.postDelayed(new Runnable() {
    correct.setVisibility(View.INVISIBLE);
    get_question(questionset[i]);
}, 1000);

它怎么不起作用?它在您调用
correct.setVisibility(TextView.INVISIBLE)
后显示?它将遇到下一个问题并崩溃它怎么不工作?它会在你调用
correct.setVisibility(TextView.INVISIBLE)
后出现?这是下一个问题,crashingI真的不能在不创建线程的情况下使用睡眠。那么我应该在里面创建一个线程吗?嘿,我把线程放进去了,它工作起来很有魅力!谢谢!我想比较性能,所以我想使用跟踪视图..我如何得到它?我是如何获得sdk工具的?我真的不能在不创建线程的情况下使用sleep。那么我应该在里面创建一个线程吗?嘿,我把线程放进去了,它工作得很有魅力!谢谢!我想比较性能,所以我想使用跟踪视图..我如何得到它?我如何获得sdk工具?correct是一个textview对象。它没有postdelayed方法Rect是一个textview对象。它没有postdelayed方法。我想比较性能,所以我想使用trace view。我如何获得它?如何在eclipse中获取sdk工具/目录?我想比较性能,所以我想使用跟踪视图..如何获取?如何在eclipse中获取sdk工具/目录?