2011-07-20 16 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

アクティビティをコンテキストとして使用することはお勧めしません。代わりにApplicationContextを使用してください。アクティビティのリークによって引き起こされるメモリリークを回避するのに役立ちます - thisを読んでください。つまり、YourActivityName.this.getApplicationContext();を使用します。

+1

WeakReference メンバーを使用すると、リークを防ぐことができます。コンテキストがAsyncTaskの終了前にファイナライズされている場合、大きな問題があります。 – Shlublu