Java 方法getApplicationContext()-如何在没有活动的情况下使用

Java 方法getApplicationContext()-如何在没有活动的情况下使用,java,android,Java,Android,我有一个在活动中调用的异步任务: public class DownloadFile extends AsyncTask<String, Integer, String>{ protected String doInBackground(String... url) { 因此,有些事情我不能做,其中之一就是使用getApplicationContext 有什么方法可以解决这个问题吗?您可以始终执行ActivityName。这您可以始终执行ActivityName。这将您的应

我有一个在活动中调用的异步任务:

    public class DownloadFile extends AsyncTask<String, Integer, String>{
protected String doInBackground(String... url) {
因此,有些事情我不能做,其中之一就是使用getApplicationContext


有什么方法可以解决这个问题吗?

您可以始终执行ActivityName。这您可以始终执行ActivityName。这将您的应用程序上下文传递给构造函数

public DownloadFile(Context context)
{
    // Do fun stuff with the context, such as assign it to a class variable
}

将应用程序上下文传递给构造函数

public DownloadFile(Context context)
{
    // Do fun stuff with the context, such as assign it to a class variable
}

您可以有一个将上下文作为参数的构造函数,这样您就可以使用

DownloadFile df = new DownloadFile(this); 
或者你可以用

ActivityClass.this

您可以有一个将上下文作为参数的构造函数,这样您就可以使用

DownloadFile df = new DownloadFile(this); 
或者你可以用

ActivityClass.this

您可以引用您的活动,如:


Context ctx=YourActivityName.this

您可以引用您的活动,如:


Context ctx=YourActivityName.this

将上下文从Activity类传递到AsyncTask的构造函数类会起作用吗?

将上下文从Activity类传递到AsyncTask的构造函数类会起作用吗?

我不建议将Activity用作上下文,而是使用ApplicationContext;它将帮助您避免由活动泄漏-读取导致的内存泄漏


也就是说,使用ActivityName.this.getApplicationContext

我不建议使用活动作为上下文,而是使用ApplicationContext;它将帮助您避免由活动泄漏-读取导致的内存泄漏

也就是说,使用ActivityName.this.getApplicationContext

您可以使用WeakReference成员来避免泄漏。如果在AsyncTask结束之前完成了上下文,则会出现一个大问题。您可以使用WeakReference成员来避免泄漏。如果在AsyncTask结束之前完成了上下文,则会出现一个大问题。