是否可以按顺序链接异步任务(在上一个异步任务完成后启动一个)

2022-09-03 05:51:44

每次我做一个,当代码执行时,屏幕将显示锁定几秒钟。因此,我曾经在一个单独的线程中做我所有的东西,同时放置一个,以便用户知道发生了什么。httpRequestAsyncTaskhttpRequestProgressDialog

我最近遇到了以下情况:我的一个输入取决于上一个(+解析)操作的结果。我不能只是按顺序放置两个,因为Android会将它们放在两个线程中,然后在没有完成第一个线程的情况下启动第二个线程。如果没有适当的输入(第一个的结果),我的第二个将崩溃应用程序。httpRequesthttpRequestAsyncTaskhttpRequesthttpRequest

有没有办法让第二个在第一个完成之前强制第二个不开始?wait()AsyncTask


答案 1

前几天我也遇到了同样的情况。我以这种方式解决了这个问题:将活动的引用传递给异步类的构造函数,并在后台执行 do 函数。现在,在执行后函数中,从异步类调用活动的公共方法以再次执行任务...或者试试这个:

            if (asynclass.getStatus() == android.os.AsyncTask.Status.PENDING) {
                asynclass.execute();
            } else if (RF.getStatus() == android.os.AsyncTask.Status.FINISHED) {
                asynclass = new asyncclass();
                asynclass.execute();
            } else {
                Toast.maketoast(this, "Plz wait", 1).show();
            }

干杯


答案 2

所以我认为(不确定),你需要调用第二个异步任务在后执行方法

protected void onPostExecute(final Void unused) {
            if (this.dialog.isShowing()) {
                this.dialog.dismiss();
                     new secTask().execute();
            }}

推荐