私はインテントサービスをいくつかの目的で使用しています。サービスの開始時に、私は2つのことを実行する必要があります。インテントサービスでのインスタンス化
は、いくつかのサービスを受けるために
getSystemService()
メソッドを使用します。getApplication()
を呼び出して私のカスタムアプリケーションクラスの関数を呼び出します。 (これは、このクラスの依存関係を注入できるように、短剣アプリケーションコンポーネントを取得することです)。
これらの両方をコンストラクタで実行しようとしましたが、どちらもNPEをスローします。おそらくonCreate()がその時点まで呼び出されていない可能性があります。 今、私はonHandleIntent()でそれをやっています。
しかし、われわれのように、このサービスを開始するためにインテントが呼び出されるたびにonHandleIntent()
が呼び出されます。だから、これらの呼び出しは私が好きではないonHandleIntent()
が呼ばれるたびに行われます。機能的には、私が望むものを達成することができますが、サービスが始まるときにこれらのことを一度だけ行う方法があるはずです。
intentserviceのonCreate
を上書きして、これを行うのに適していますか?またはより良い解決策がありますか?
はい、あなたのものを 'onCreate'の中に入れます – pskink