Android如何在其他类中运行OnUiThread?

标签 android multithreading asynchronous

在我的应用程序 MainActivity 中,有一个工作正常的线程。但是当我调用另一个类从服务器获取数据时,我无法在线程上运行。请参阅下面的代码示例。

class MainActivity extends Activity implements Runnable {

    public void onCreate() {
        new Thread(this).start();
    }

    public void run() {
        //here is code for download data from server after completion this and in handler  i m call other class in setdata() method....
    }

    public void setData() {
        new CheckData(this);
    }
}

class CheckData {
    public CheckData(Context context) {
        context.runUIonthread(){//cant call as runUIthread............
    }
}

最佳答案

见文章Communicating with the UI Thread .

有了Context,你可以在任何类中创建一个Handler。否则,您可以调用 Looper.getMainLooper(),无论哪种方式,您都可以获得主 UI 线程。

例如:

class CheckData{
    private final Handler handler;

    public Checkdata(Context context){
       handler = new Handler(context.getMainLooper());
    } 

    public void someMethod() {
       // Do work
       runOnUiThread(new Runnable() {
           @Override
           public void run() {
               // Code to run on UI thread
           }
       });
    }

    private void runOnUiThread(Runnable r) {
       handler.post(r);
    }  
}

关于Android如何在其他类中运行OnUiThread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7860384/

相关文章:

android - 是否可以在 Google Play 上限时免费分发销售应用程序?

c++ - 信号量与互斥量

multithreading - 我如何并行化 GPars Actors?

android - 如何将数据从sqlite存储到google excel表

android - PDFTron 墨水注释

android - 从 Android 设备上的服务器向应用程序发送通知

java - 持有两个对象的锁

javascript - 如何调用一系列 Promise 函数?

scala - 将 IgniteCursor[T]/Iterable[T] 转换为 Future[Seq[T]]

javascript - 递归函数完成后退出node.js