0

我有一个正在绘制图像的自定义视图类。问题是当我使用 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);
            ....
        }
    }
}

任何帮助将不胜感激。

4

1 回答 1

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);
    }
}
于 2013-02-06T12:14:39.340 回答