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

标签 android multithreading

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

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

现在我正在使用

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

    }
 }).start();

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

最佳答案

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

因为运行永远不会返回,所以线程永远不会结束并且会永远循环。它会大约每 100 毫秒调用一次 doSomething(尽可能接近 sleep ,这并不准确)。

关于android - 在自己的线程中运行连续调用方法的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29533934/

相关文章:

java - 获取自定义列表适配器以正确膨胀多个线性布局

android - PNG 未显示在 ImageView 中

mysql - 无法在 mysql 中设置线程堆栈大小

multithreading - Golang 线程池调度程序的目的和顺序

java - 如何让两个线程执行两个不同的循环或方法?

android - 如何在 asyncTask 中执行 getWritableDatabase()

java - Listview 的 onclick 事件问题

java - 如何绘制箭头(在 Android 中)?

multithreading - 并发、并行和异步方法有什么区别?

java - 使两个线程独立于进程,而无需 sleep /等待/通知