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