在自己的线程中运行连续调用的方法的正确方法?

Mee*_*tat 1 multithreading android

我正在使用 thread.sleep(100) 连续调用 methode doSomething()。这发生在 UIThread 上,因此 UIthread 变得无响应。在 Android 中,在单独的线程中运行方法 doSomething() 或整个 someobject 的正确方法是什么?

public void loop(){
 while(true){
  someObject.doSomething();
  try {
       Thread.sleep(100);
  } catch (InterruptedException e) {
       e.printStackTrace();
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

现在我正在使用

 new Thread(new Runnable() {
    @Override
    public void run() {
          someObject.doSomething();

    }
 }).start();
Run Code Online (Sandbox Code Playgroud)

这显然为每次迭代创建了一个不同的线程。我不认为这是正确的方法。Android中的正确方法是什么?

Gab*_*han 5

 new Thread(new Runnable() {
    @Override
    public void run() {
        while(true){
           try {
               Thread.sleep(100);
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
           someObject.doSomething();
       }
    }
 }).start();
Run Code Online (Sandbox Code Playgroud)

由于 run 永远不会返回,线程永远不会结束并且将永远循环。它将大约每 100 毫秒调用一次 doSomething(尽可能接近 sleep,这并不准确)。