2012-02-23 9 views
0

私の問題は、いくつかの機能を呼び出すために私のカスタムアプリケーションオブジェクトを必要とするいくつかのasynctasksがあることです。 asynctaskを作成するたびに、アプリケーションオブジェクトまたは現在のコンテキストを渡す必要がありました。それはいいですかAndroidで参照できるようにカスタムApplicationクラス内に静的Applicationオブジェクトを定義していますか?

アプリケーションオブジェクトを静的にするとどうなると思います。

クラスのMyAppアプリケーション{

静的MyAppのアプリケーションを拡張します。

public onCreate(){ app = this; }

}

それから私は、コンテキストを渡す必要がなく、このグローバルなアプリケーションオブジェクト(MyApp.app)を取得することができます。

をそれは大丈夫でしょうか?任意のリスク?

答えて

0

実際には、これを行う必要はありません。 アプリケーションのサブクラスを作成し、マニフェストに独自のアプリケーションを宣言するだけです。

<Application 
    android:name="blah.YourApplication"> 
</Application> 

はそれにアクセスするには、あなただけのgetApplication(への活動やサービスのインスタンスを必要とする)し、あなたの「YourApplication」クラスにキャストします。

AsyncTaskサブクラスで "YourApplication"にアクセスしたいので、内部で "YourApplication"にアクセスできるように、AsyncTaskを開始したサービスまたはアクティビティを "AsyncTask"サブクラスに渡す必要があります。

+0

私はサービスやアクティビティを渡したくないので、迷惑です。だから私は静的変数を使用すると考えました。その場合は – virsir

+0

、あなたのアプローチはうまくいくはずです。とにかく、アプリケーションのライフサイクルには、「アプリケーション」クラスのインスタンスが1つしかありません。 – Macchiato

関連する問題