使用我有一個名爲活動中的異步任務:方法getApplicationContext() - 如何在不活動
public class DownloadFile extends AsyncTask<String, Integer, String>{
protected String doInBackground(String... url) {
因爲這有一些事情我不能做,其中的一個它的使用getApplicationContext()
有什麼辦法可以解決這個問題?
使用我有一個名爲活動中的異步任務:方法getApplicationContext() - 如何在不活動
public class DownloadFile extends AsyncTask<String, Integer, String>{
protected String doInBackground(String... url) {
因爲這有一些事情我不能做,其中的一個它的使用getApplicationContext()
有什麼辦法可以解決這個問題?
通過你的應用程序上下文中構造
public DownloadFile(Context context)
{
// Do fun stuff with the context, such as assign it to a class variable
}
你總是可以做ActivityName.this
你既可以有一個具有上下文作爲參數的構造函數 - 這種方法你可以從活動中調用它使用
DownloadFile df = new DownloadFile(this);
或者你可以只使用
ActivityClass.this
你可以使用一個參考您的活動,如:
上下文CTX = YourActivityName.this;
將上下文從Activity類傳遞到AsyncTask的構造函數類是否可以完成這項工作?
我不建議使用Activity作爲上下文,而是使用ApplicationContext;它將幫助您避免活動泄漏引起的內存泄漏 - 請閱讀this。
這就是說,使用YourActivityName.this.getApplicationContext();
您可以使用WeakReference成員來避免泄漏。如果Context在AsyncTask結束之前完成,那就存在一個大問題。 –
Shlublu