バックグラウンドサービスのAndroidのgetContext

ウルク:

私が作成しようとしているサービスの私のアプリが閉じている場合でも動作します。しかし、私は私のアプリを使用する必要があるコンテキストを、この内サービスアプリが実行されている場合、サービスは同様に動作しますが、私はアプリ(onDestroy()が呼ばれた)、閉じたときにgetContext()必ず戻りますnull

サービス

public class SubscribeService extends Service {

    private Context context;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = this; //Returns null when service is running on background
        context = MyApp.getContext(); //Also null
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        //do stuff using context
    }

MyAppの

public class MyApp extends Application {

    private static Context context;

    public static Context getContext() {
        return context.getApplicationContext();
    }

    @Override
    public void onCreate() {
        context = getApplicationContext();
        super.onCreate();
    }
}

活動のonCreateからサービス開始()

startService(new Intent(this, SubscribeService.class));

どのように私は使うべきコンテキストを、このシナリオでは?

編集します

それは後に正常に動作させるためにマネージドOnikのヘルプ。私はちょうど呼び出す必要があったMyApp.getContext();前にsuper.onCreate();そうように:

@Override
public void onCreate() {
    context = MyApp.getContext();
    super.onCreate();
}
良いです:

サービスは、拡張コンテキストをあなたは使用することができるthis場所、thisへの参照であるServiceインスタンス。

次のコードに関する以下の私のコメントに詳細を置くSubscribeServiceのクラスを:

@Override
public void onCreate() {
    super.onCreate();
    context = this;
    context = MyApp.getContext();
}

あなたにServiceonCreate() context = thisすることはできませんnull基本的なプログラミングパラダイムで。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=183318&siteId=1