java - Android如何同时处理多个Runnable对象

标签 java android multithreading

我试图创建多个任务队列并同时执行它们,但延迟时间不同。基本上,一开始我只有一个可运行的对象

private final Runnable myQueue = new Runnable() {
public void run() {

    if (service != null && service.isRunning() && service.queueEmpty()) {
        queueTasks();
    }
    // run again in period defined in preferences
    new Handler().postDelayed(myQueue,getUpdatePeriod(prefs));
}

};

private void StartWExecute() {new Handler().post(myQueue);}

我想改进我的代码,这样会有多个队列,并且所有队列同时开始执行,但是每个队列可能有不同的updatePeriod,这取决于其中的任务。通过这种方式,我可以将任务排序到队列中并手动控制更新速度。我如何实现这一目标?

谢谢。

最佳答案

您需要使用MessageQueue:

1.声明一个处理程序: 处理程序 mWorkerHandler;
2.创建一个Looper:

Thread t = new Thread() {
            @Override
            public void run() {
                Looper.prepare();
                mWorkerHandler = new Handler() {
                    @Override
                    public void handleMessage(Message msg) {
                        Log.d(TAG, "handleMessage - what = " + msg.what);
                    }
                };
                Looper.loop();
            }
        };
        t.start();

3.现在可以发送任意数量的消息,并根据消息内容进行操作:

mWorkerHandler.sendEmptyMessageDelayed(1, 2000);
mWorkerHandler.sendEmptyMessage(2);

关于java - Android如何同时处理多个Runnable对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37791852/

相关文章:

java - 如何在导入的非 Maven 项目上使用 Maven (Eclipse Keppler)

java - Hibernate:在另一个实体PK中使用复合FK的一部分

android - PreferenceFragment 背景颜色

c++ - 基于从两个不同线程获取的时间戳匹配图像

java - 来自单个连接中多个文件的 Commons FTPClient InputStream

java - 从 json 反序列化时保留引用

android - OkHttp SSLPeerUnverifiedException

android - 如何使用 Dagger2 将 Presenter 注入(inject) View(MVP 模式)

c# - 如何从业务层更新UI?

java - 应用程序容器中的守护线程