Android 获取UI线程上的延迟

Android 获取UI线程上的延迟,android,android-activity,android-ui,Android,Android Activity,Android Ui,我正在使用以下代码设置listview项的颜色parent.getChildAt(itemPosition).setBackgroundColor(color.parseColor(“#FF9494”) 这段代码是我用编写的,它是一个监听器 设置颜色后,我想将此颜色保持4秒,然后将项目的颜色恢复为以前的颜色(例如白色) 我尝试在UI线程上设置睡眠,但我知道这不是一个正确的方法 有谁能建议我如何实现这一点吗?可能您可以尝试实现一个异步任务,然后可以从侦听器调用该任务。此asyncTask的doIn

我正在使用以下代码设置
listview
项的颜色
parent.getChildAt(itemPosition).setBackgroundColor(color.parseColor(“#FF9494”)

这段代码是我用
编写的,它是一个监听器

设置颜色后,我想将此颜色保持4秒,然后将项目的颜色恢复为以前的颜色(例如白色)

我尝试在UI线程上设置睡眠,但我知道这不是一个正确的方法


有谁能建议我如何实现这一点吗?

可能您可以尝试实现一个异步任务,然后可以从侦听器调用该任务。此asyncTask的doInBackground方法可以包含一个sleep方法,以避免在一段时间内调用onPostExecute。在onPostExecute中,您可以根据需要重置颜色。

如果无法像我所期望的那样在doInBackground方法中编写sleep方法,那么在更改文本颜色之前,将sleep方法也放在onPostExecute方法中。

主线程在其中运行一个循环器。为此,可以安排一个
Runnable
delayed。在
侦听器中,您的代码可以简单到:

    parent.getChildAt(itemPosition).setBackgroundColor(Color.parseColor("#FF9494"));
    // Start new Thread that sets the color back in 4 seconds
    new Thread(new Runnable() {
        @Override
        public void run() {
            SystemClock.sleep(4000); // Sleep 4 seconds
            // Now change the color back. Needs to be done on the UI thread
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    parent.getChildAt(itemPosition).setBackgroundColor(Color.parseColor("#000000")); // use whatever other color you want here
                }
            });
        }
    }).start();
@Override
public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
    view.setBackgroundColor(Color.parseColor("#FF9494"));
    view.postDelayed(new Runnable() {
        @Override
        public void run() {
            view.setBackgroundColor(Color.parseColor("#FFFFFF"));
        }
    }, 4000);
}
@覆盖
public void onItemClick(AdapterView父视图、最终视图、整型位置、长id){
view.setBackgroundColor(Color.parseColor(#FF9494”);
view.postDelayed(新的Runnable(){
@凌驾
公开募捐{
view.setBackgroundColor(Color.parseColor(“#FFFFFF”);
}
}, 4000);
}
它显示错误“说明资源路径位置类型方法rununuithread(new Runnable(){})对于类型new Runnable()”在
rununuithread
方法中未定义。
rununuithread()
活动的方法。您需要添加类似于
MyActivity.this.runOnUiThread(…)