2015-09-13 7 views
6

Я хотел бы сохранить некоторые вещи в SharedPreferences, находясь на перехватчике. Я не могу найти способ сделать это, потому что я не могу найти способ доступа к контексту на Interceptor (так что нельзя использовать PreferencesManager и т. Д.).Как получить доступ к контексту в перехватчике?

public class CookieInterceptor implements Interceptor { 

@Override public Response intercept(Chain chain) throws IOException { 

    PreferenceManager.getDefaultSharedPreferences(Context ??) 

}} 

Любые идеи?

Я использую AndroidStudio & Последняя версия OkHttp.

Спасибо;)

ответ

3

Вы можете создать класс, который позволяет извлекать контекст из любой точки (т.е. ваш перехватчик):

public class MyApp extends Application { 
    private static MyApp instance; 

    public static MyApp getInstance() { 
     return instance; 
    } 

    public static Context getContext(){ 
     return instance; 
    } 

    @Override 
    public void onCreate() { 
     instance = this; 
     super.onCreate(); 
    } 
} 

Затем добавить это манифеста, как это:

<application 
    android:name="com.example.app.MyApp" 

И тогда в вашем перехватчик, сделайте следующее:

PreferenceManager.getDefaultSharedPreferences(MyApp.getContext()); 
+0

Не может ли это вызвать утечку памяти? Хранение объекта приложения в статической переменной. –

Смежные вопросы