#android
#Android
Вопрос:
Я внедрил постоянное хранилище файлов cookie Http, чтобы файлы cookie http сохранялись при перезапуске приложения (аналогично этому: https://github.com/loopj/android-async-http/blob/master/library/src/main/java/com/loopj/android/http/PersistentCookieStore.java)
Мое приложение использует обычные HttpURLConnection и Volley.
Приложение состоит из двух процессов — одного для основного пользовательского интерфейса приложения и другого, который обрабатывает обработку аудиопотока. Причина второго процесса заключается в том, чтобы позволить сторонним клиентам использовать те же функции обработки звука.
Проблема, с которой я сталкиваюсь, заключается в том, что основной процесс пользовательского интерфейса приложения получает http-файлы cookie с моего сервера, но затем запросы, поступающие от второго процесса, не имеют этих файлов cookie, потому что это отдельный процесс, и наоборот.
Я думал о создании общего объекта на уровне контекста приложения, а затем о его повторном использовании в обоих процессах, но, похоже, это не всегда работает.
Пример кода в классе приложения (первый процесс):
public void onCreate() {
super.onCreate();
mCookieManager = new CookieManager(new PersistentCookieStore(this), CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(mCookieManager);
}
Пример кода в классе обслуживания (второй процесс):
if(appCtx.getCookieManager() != null) {
CookieHandler.setDefault(appCtx.getCookieManager());
}
Похоже, мне нужно хранилище файлов cookie для каждого процесса и какой-то механизм для их синхронизации всякий раз, когда необходимо сохранить или обновить / удалить новый файл cookie. Ищу несколько предложений.
Комментарии:
1. Чтобы было ясно, проблема в том, что некоторые запросы, поступающие от второго процесса, удаляют файл cookie — я использую Charles Proxy и вижу, что в некоторых запросах отсутствует значение в заголовках HTTP. Файлы cookie сохраняются в SharedPreferences, но они передаются через пользовательский объект PersistentCookieStore, который инициализируется в процессе приложения. Приложение предназначено для устройств> = ICS. Мои общие настройки настроены для Context.MODE_MULTI_PROCESS, так что все должно быть в порядке.