java - 在 Android 中异步执行方法的最佳方式(紧凑且正确)

标签 java android multithreading asynchronous

假设我有一个 Activity 在屏幕上显示一些内容。我需要异步执行一些方法 (asyncMethod),完成后,我需要更新屏幕上的数据。最正确、最简单的方法是什么?

目前我知道的最简单的方法是使用线程:

new Thread(new Runnable() {         
    public void run() {
        asyncMethod();              
    }
}).start();

我熟悉 AsyncTask,但它比使用线程更复杂,并且对于我需要异步运行的每个方法,都需要创建新的 AsyncTask,而这会大大增加代码大小。

我考虑过一些通用的 AsincTask,它获取方法作为参数然后执行它,但据我所知,在 Java 中不可能将方法作为参数传递。

换句话说,我正在寻找最紧凑(但正确)的方法来异步执行方法。

最佳答案

HandlerLooper

大多数时候,将Handler 保留在UI 线程的Looper 中,然后用它来post Runnable。例如:

Handler h = new Handler();
//later to update UI
h.post(new Runnable(//whatever);

PS:HandlerLooper 很棒。这么多我remade它们用于 Java。

关于java - 在 Android 中异步执行方法的最佳方式(紧凑且正确),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16317201/

相关文章:

c++ - Direct2D 中的多线程

C 线程在访问非共享资源时给出垃圾输出

java - 没有主键 ID 的实体

java - 如何从java中的链接读取id值

java - 使用 thrift 在 java 生成的文件中额外的 boolean 集字段

java - Play 应用程序在空闲状态下死掉,根据新请求重新启动?

java - 如何使用在 Android studio 中自动创建的内部静态 Placeholder Fragment 类?

java - 可视化重力畸变(2D)的算法

android - 运行单个测试以检查代码覆盖率 Jacoco Android

java - jdbc中的语句是否同步执行批处理