SharedPreferences вызывается через jni из кода C ++.
когда APP_OPTIM := debug
, предпочтение сохраняется, но не для выпуска.
Что значит APP_OPTIM := release
делать?
ОБНОВИТЬ:
Оказывается, в коде jni возвращение опущено, возможно, с APP_OPTIM: = debug,
возврат добавлен, а для выпуска возврат опущен.
int getPreference(string x)
{
jniGetPreference(x);
}int getPreference(string x)
{
return jniGetPreference(x);
}
Легко узнать, что APP_OPTIM=release
делает. Просто беги
ndk-build -B V=1 APP_OPTIM=debug
а также
ndk-build -B V=1 APP_OPTIM=release
и сравните журналы сборки.
Что касается вашего первого вопроса, скорее всего, оптимизация C ++ не очищает некоторую память, и SharedPreferences.Editor.commit()
не вызывается или вызывается на другом экземпляре SharedPreferences.Editor
(увидеть https://stackoverflow.com/a/9677788/192373 например).