Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用runOnUiThread重复此函数以更新textview位置_Java_Android_Function_Repeat - Fatal编程技术网

Java 使用runOnUiThread重复此函数以更新textview位置

Java 使用runOnUiThread重复此函数以更新textview位置,java,android,function,repeat,Java,Android,Function,Repeat,我试图让我的文本视图每隔一两分钟出现在屏幕的不同位置(延迟并不重要)。我看到有人建议我使用runOnUiThread让计时器重复随机函数并更新UI 我真的很难理解这些不同的思路,只是想知道是否有人能给我举个例子?或者我应该使用不同的方法进行研究 Public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate

我试图让我的文本视图每隔一两分钟出现在屏幕的不同位置(延迟并不重要)。我看到有人建议我使用runOnUiThread让计时器重复随机函数并更新UI

我真的很难理解这些不同的思路,只是想知道是否有人能给我举个例子?或者我应该使用不同的方法进行研究

Public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView textView = (TextView) findViewById(R.id.digitalClock1);  
    Random r = new Random();

    int x = r.nextInt(350 - 100);
    int y = r.nextInt(800 - 100);

    textView.setX(x);  
    textView.setY(y);
}
试试这个方法

public void doInback()
    {
        handler.postDelayed(new Runnable() {

            @Override
            public void run()
            {
                // TODO Auto-generated method stub
                // Try the code that you want to repeat


                doInback();
            }
        }, 1000);

    }

只需调用您想要使用的方法。

在下面创建runnable和处理程序

 private Runnable runnable = new Runnable(){
    @Override
    public void run() {         
        handler.sendEmptyMessage(0);
    }
};
Handler handler = new Handler() {       
    @Override
    public void handleMessage(Message msg) {            
        //change the text position here         
        this.postDelayed(runnable , TIME_OUT_MS);
        }
    }; 
超时\u MS是以毫秒为单位的所需超时

并将其放在活动的OnCreate()方法上

    Thread thread =new Thread(runnable );
     thread.start();

您必须使用runOnUiThread更新您的文本视图,但不要在此线程上运行计时器!使用一个新线程来调度或一个调度执行器服务:如果调用此方法,它不会只重复函数一次吗?好的,请原谅我的无知,但最后一个“Thread-Thread=new-Thread(runnable);Thread.start();”位应该放在哪里?