我有一个自定义View类,它正在绘制图像。问题是当我使用Thread.sleep(200)时;在onDraw方法中,它还会影响同一活动中的XML元素。所以我必须等待200毫秒,直到发生一些事情。
MainPage extends Activity implements OnClickListener{
onCreate(...){
RelativeLayout rl = (RelativeLayout) findViewById(R.id.main_rl);
rl.addView(new CustomView(this));
}
onClick(View v){
switch(v.getId){
...
};
}
}
CustomView extends View{
onDraw(){
try{
Thread.sleep(200);
....
}
}
}
任何帮助将不胜感激。
答案 0 :(得分:1)
永远不要在Android中的任何UI侦听器回调(或在UI线程上运行的任何其他地方)中运行长时间操作。相反,创建一个新线程来执行睡眠,然后做任何需要做的事情。请记住,如果您想再次与UI进行交互,则需要在UI线程中执行此操作,您可以通过调用runOnUiThread()
来安排。
CustomView extends View{
onDraw(){
(new Thread(myRunnable)).start();
}
}
Runnable myRunnable = new Runnable() {
void run() {
try { Thread.sleep(...); } catch...;
do_non_ui_things_if_needed();
runOnUiThread(some_runnable_for_this_if_needed);
}
}