2011-07-20 18 views
1

使用我有一個名爲活動中的異步任務:方法getApplicationContext() - 如何在不活動

public class DownloadFile extends AsyncTask<String, Integer, String>{ 
protected String doInBackground(String... url) { 

因爲這有一些事情我不能做,其中的一個它的使用getApplicationContext()

有什麼辦法可以解決這個問題?

回答

1

通過你的應用程序上下文中構造

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

你既可以有一個具有上下文作爲參數的構造函數 - 這種方法你可以從活動中調用它使用

DownloadFile df = new DownloadFile(this); 

或者你可以只使用

ActivityClass.this 
0

你可以使用一個參考您的活動,如:

上下文CTX = YourActivityName.this;

0

將上下文從Activity類傳遞到AsyncTask的構造函數類是否可以完成這項工作?

0

我不建議使用Activity作爲上下文,而是使用ApplicationContext;它將幫助您避免活動泄漏引起的內存泄漏 - 請閱讀this

這就是說,使用YourActivityName.this.getApplicationContext();

+1

您可以使用WeakReference 成員來避免泄漏。如果Context在AsyncTask結束之前完成,那就存在一個大問題。 – Shlublu

相關問題