Java Android:如何获取调用类的活动

Java Android:如何获取调用类的活动,java,android,Java,Android,我有活动1和活动2。两者都可以调用名为fetchData.java的类。在fetchData.java中有没有什么方法可以让我获得称之为它的活动 以下是我的fetchData.java: public class fetchData extends AsyncTask<String,String,String> { @Override protected String doInBackground(String... voids) { //do someth

我有活动1和活动2。两者都可以调用名为fetchData.java的类。在fetchData.java中有没有什么方法可以让我获得称之为它的活动

以下是我的fetchData.java:

public class fetchData extends AsyncTask<String,String,String> {

    @Override
    protected String doInBackground(String... voids) {
    //do something
    }

    @Override
    protected void onPostExecute(String aVoid) {
        super.onPostExecute(aVoid);
    }
}

我能看到的唯一方法是在构造函数中传递活动:

public class FetchData extends AsyncTask<String, String, String> { //rename fetchData to FetchData to follow Java coding practices
    private Activity activity;

    public FetchData(Activity activity) {
        this.activity = activity;
    }

    @Override
    protected String doInBackground(String... strings) { //use the proper variable names
        //...
    }

    @Override
    protected void onPostExecute(String string) { //use the proper variable names
        //use instanceof to check the identity of the activity instance
        if (activity instanceof Activity1) {
            //whatever
        } else if (activity instanceof Activity2) {
            //whatever else
        }
        //super call isn't needed
    }
}
注意我的评论。我对您的代码做了一些更改,以提高可读性并更好地符合Java的编码标准


在其他情况下,您可能能够读取stacktrace并找到调用类,但由于您使用的是在另一个线程上运行的AsyncTask,因此stacktrace只能追溯到创建线程时,因此在这里无法工作。

调用类意味着什么?对不起。我添加了fetchData.java代码
public class FetchData extends AsyncTask<String, String, String> { //rename fetchData to FetchData to follow Java coding practices
    private Activity activity;

    public FetchData(Activity activity) {
        this.activity = activity;
    }

    @Override
    protected String doInBackground(String... strings) { //use the proper variable names
        //...
    }

    @Override
    protected void onPostExecute(String string) { //use the proper variable names
        //use instanceof to check the identity of the activity instance
        if (activity instanceof Activity1) {
            //whatever
        } else if (activity instanceof Activity2) {
            //whatever else
        }
        //super call isn't needed
    }
}
FetchData getValues = new FetchData(this);
getValues.execute();