线程中的java更新屏幕

时间:2016-06-21 23:25:22

标签: java android

我正在编写一个包含等待线程的脚本。如果线程被执行,它不会更新屏幕。在脚本中我将图片更改为另一张图片,但在我再次按下按钮之前它不会显示。所以主要的问题是:设置不同的图像资源后,我需要更新屏幕。

以下是代码:

 public void Start(View view) {

    Runnable r = new Runnable() {
        @Override
        public void run() {
            int i =0;
            while(i<12) {
                synchronized (this) {
                    try {

                        Setfoto(i);
                        Thread.sleep(1000);
                        Log.i(TAG, "Begonnen met loop");
                        Log.i(TAG, "i = " + i);
                        i = i +1;
                    } catch (Exception e) {}
                }

            }
        }
    };

    Thread buckysThread = new Thread(r);
    buckysThread.start();

}

public void Setfoto(int nummer) {
    if (nummer == 1) {
        een.setImageResource(R.drawable.eerster);
        Log.i(TAG, "Foto 1 wordt rood");

    } if(nummer ==2) {
        twee.setImageResource(R.drawable.eerster);
        Log.i(TAG, "Foto 2 wordt rood");
    } if(nummer ==3) {
        drie.setImageResource(R.drawable.tweer);
        Log.i(TAG, "Foto 3 wordt rood");
    }

}

2 个答案:

答案 0 :(得分:0)

您需要有某种方式在UI线程上运行代码,该线程负责更新屏幕内容和操作视图。

可以调用

import glob import panda as pd def my_function(test_path): path=test_path +"\\"+ "*mainlog.txt" files =glob.glob(path) for name in files: lines=[line.rstrip('\n')for line in open(name)] if "a:" in lines: k_1=pd.Dataframe1 return k_1 elif "b:" in lines: k_2=pd.Dataframe2 return k_2 elif "c:" in lines: k_3=pd.Dataframe3 return k_3 elif "d:" in lines: k_4=pd.Dataframe4 return k_4 elif "e:" in lines: k_5=pd.Dataframe5 return k_5 。放在那里的任何代码都将在UI线程上运行。

答案 1 :(得分:0)

您可以使用runOnUiThreadAsyncTaskThread-Handler来执行您的任务

  1. Activity.runOnUiThread

    runOnUiThread(new Runnable(){             public void run(){             //在UiThread上做点什么         }     });

  2. 主题处理程序

  3. Communicating with the UI Thread

    1. 的AsyncTask
    2. AsyncTask Tutorial