Java 如何处理混乱的异步操作?

Java 如何处理混乱的异步操作?,java,android,Java,Android,我有一个在Android应用程序中启动的任务。它包含多个子任务,每个子任务都有一个完成。有些事情需要按顺序运行,另一些只是启动和忘记…但我希望在启动任务本身完成之前完成所有事情 哪些内置类提供这样的功能?现有代码(相当旧)使用AsyncTask,但其中的每个调用都是阻塞的。这是可行的,但是很多阻塞API已经被弃用,我看不到任何方法可以让AsyncTask做我想做的事情并继续运行到doInBackground的末尾。(此外,AsyncTask本身已被弃用。) 这大致就是旧代码的样子: public

我有一个在Android应用程序中启动的任务。它包含多个子任务,每个子任务都有一个完成。有些事情需要按顺序运行,另一些只是启动和忘记…但我希望在启动任务本身完成之前完成所有事情

哪些内置类提供这样的功能?现有代码(相当旧)使用AsyncTask,但其中的每个调用都是阻塞的。这是可行的,但是很多阻塞API已经被弃用,我看不到任何方法可以让AsyncTask做我想做的事情并继续运行到
doInBackground
的末尾。(此外,AsyncTask本身已被弃用。)

这大致就是旧代码的样子:

public class StartupTask extends AsyncTask<Void, Void, Void> implements TaskInterface {

    protected Void doInBackground(Void... params) {

        // several steps here

        String token = FirebaseInstanceId.getInstance().getToken();
        subscribeToAllChannels(token);

        // several more steps, including using token

    }
更容易阅读的东西会更好,因为我想象有人比我想得更多,但我对这个基本情况感到满意:有点像iOS NSOperation的并发模式,在这种模式下,我没有实现main/doInBackground/run,而是实现一个start方法,然后显式结束任务

在Android/Java上有哪些工具可以实现这一点?我看过的每个类都有相同的假设:当
doInBackground()
(或
run()
,或其他什么)完成时,任务就完成了。我还没有找到任何方法让它挂起来,完成它来回应完成


我在找一些内置的……或者,至少是小的。不要导入一个巨大的框架来改变我在任何地方都需要这样做的方式。

我应该使用什么结构?
我认为这让你的问题基于观点,因为我们无法真正告诉你应该使用什么。如果您使用的是kotlin,您可以考虑协同路由,否则对于java,rxjava可能会有所帮助?我想这可能是公平的,但我只是想寻找一个指向任何内置类的指针来处理这个问题。我不想在这里采用一个庞大的框架。:)到目前为止,我还没有发现“how do I/What Class”在线帮助Android编程的方法。
AsyncTask
被弃用,这意味着有一种更好/更简单的方法。我可能会看到rxjava以您编写的代码风格让您更快乐,但我不会说这是最简单的学习框架,但这是基于我的观点,这有点主题化:)是的,我认为我不需要rxjava。我可能可以在run()结束时使用while循环(并使用Runnable而不是AsyncTask)和一些信号来解决这个问题,但从纯度的角度来看,这在生产代码中似乎是一种糟糕的方法。
protected void start() {
    getToken(new Runnable(){
        @override void onResult(String token){
            somethingElse(token, new Runnable(){
                // etc, more levels, until ultimately:
                finished();
            });
        }
    });
}