外部类中的Android AsyncTask [英] Android AsyncTask in external class

查看:22
本文介绍了外部类中的Android AsyncTask的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在开发一个应用程序,并且我设法让 AsyncTask 在内部类中正常工作.

I've been working on an app and I've managed to get the AsyncTask to work fine when it's in an inner class.

现在,我正在重构代码,以便 AsyncTask 在它自己的一个单独的类中,但我想知道,我如何杀死 ProgressDialog 并启动任务成功完成后的新活动?我已经尝试在 onPostExecute(..) 方法中启动一个新的 Activity,但我知道这行不通.

Now, I am refactoring the code so that the AsyncTask is in a separate class of its own, but I am wondering, how do I kill the ProgressDialog and start a new Activity once the task is completed successfully? I've tried starting a new Activity in the onPostExecute(..) method, but I know that won't work.

在 AsyncTask 的构造函数中将我的 UI 线程活动作为参数传递似乎不起作用:

Passing my UI thread activity as an argument in the constructor for the AsyncTask did not seem to work:

//In UI Thread I had
public class Test101 extends Activity {
    private Button btnLogin;
    private LoginTask mLoginTask;
    private Context context=this;
    private Test101 mTest101;

    mLoginTask=new LoginTask(context,mTest101);
    mLoginTask.execute(null);

    // In the AsyncTask I had
    Activity mParentActivity;

    public LoginTask(Context context,Activity act){
        this.ctx=context;
        this.mParentActivity=act;
    }

    onPostExecute(..){
        mParentActivity.callSomeMethod();
    }

    ...
}

我一直收到 NullPointerException,也许我遗漏了一些东西,但这对我不起作用.

I kept getting a NullPointerException, maybe I'm missing something but that didn't work for me.

推荐答案

像这样只传递一个参数而不是传递 2 个参数:

Instead of passing 2 parameters pass only one like this:

public class Test101 extends Activity {
    private Button btnLogin;
    private LoginTask mLoginTask;

    mLoginTask=new LoginTask(this);
    mLoginTask.execute(); 
    //Instead of sending null put the 1st parameter of the AsyncTask as Void

异步任务代码:

  Activity mParentActivity;

public LoginTask(Activity act){
    this = act;
}

onPostExecute(..){
    ((Test101)mParentActivity).callSomeMethod();
}

这篇关于外部类中的Android AsyncTask的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆