有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

等待java完成异步任务

我有三节课

  1. A类(扩展活动。这是主要活动)
  2. B类(扩展异步。用于登录)
  3. 类C(扩展活动。在类B的异步任务完成后调用)

在我的主要活动(A)中,我正在执行B类的登录方法。 在这些登录方法运行后,我想打开第二个活动,即C类。我现在不能这样做,因为B类运行C类打开。我需要它来等待异步任务完成

有人知道如何做到这一点吗?我已经搜索过了,从我收集到的信息来看,人们并没有试图用和我一样的类结构来做这件事,这会稍微改变一些事情

谢谢


共 (3) 个答案

  1. # 1 楼答案

    使B成为A的内部类,然后从^{开始C。因为B是A的内部类,所以可以访问A中的所有内容

  2. # 2 楼答案

    Does anyone know how to achieve this?

    从B的onPostExecute()开始C

    because Class B doesn't extend activity

    你的AsyncTask应该由一个保留的片段来管理,这样它就可以在配置更改期间正常工作。使AsyncTask成为该保留片段的一个常规内部类,这样它就可以从onPostExecute()安全地调用getActivity(),并且可以调用startActivity()

  3. # 3 楼答案

    如果希望AsyncTask保留在单独的文件中,则需要在构造函数中获取上下文。然后在完成登录后,就可以开始活动C

    比如:

    public class LoginTask extends AsyncTask<Void, Void, Void> {
    
        Context mContext;
    
        public LoginTask(Context ctx) {
            mContext = ctx;
        }
    
    
        @Override
        protected Void doInBackground(Void... voids) {
            // Login here
            return null;
        }
    
        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            // Start Activity C
            Intent intent = new Intent(mContext, ActivityC.class);
            mContext.startActivity(intent);
        }
    }
    

    在活动A中,调用以下异步任务:

    new LoginTask(this).execute();