Я получаю некоторые странные эффекты после принудительного закрытия приложения. Когда приложение закрывается с помощью finish (), все в порядке. У меня есть некоторые переменные, сохраненные в sharedPreferences, поэтому, когда приложение загружается снова, оно может восстановить эти переменные в пользовательском интерфейсе. Тем не менее, если я принудительно закрою приложение, а затем попытаюсь продолжить с того места, где оно было остановлено, некоторые переменные начнут «вести себя забавно». Под этим я подразумеваю (в onCreate), что я проверяю, равна ли строка, загруженная из sharedPreferences, значению (сжатая версия):
String namec;
private static final String TAG = "MyActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//namec was set as "forest" in a previous activity
//which is bypassed if the user selects continue
//from the main menu
SharedPreferences pathtaken = getSharedPreferences("pathtakenpref", MODE_WORLD_READABLE);
namec = pathtaken.getString("namec", "Unknown");
ImageView v1 = (ImageView) findViewById(R.id.pathpic1);
RelativeLayout v2 = (RelativeLayout) findViewById(R.id.pathmain);
Log.i(TAG, "namec= " + namec);
if(namec == "forest"){
v1.setImageResource(R.drawable.forest);
v2.setBackgroundResource(R.drawable.forestrepeat);
}
}
То, что происходит здесь, это namec, фактически, равнозначно «лесу». Я отправляю значение в журнал, и оно показывает переменную в точности так, как и должно быть («лес»). Тем не менее, он не будет запускать код внутри if {}. Это дает мне кошмары. Я застрял на этой неделе!
В том же коде я загружаю другой набор sharedPreferences (помеченный как TRHprefs), и каждая из них (6 целых и 3 строки) загружается и отображается просто отлично. Я даже добавил if {} для проверки 1 строки и 1 целого числа из TRHprefs ... они оба вернулись.
В.1: Есть ли что-то, что может привести к тому, что мои sharedPreferences xml каким-то образом повредятся при закрытии принудительно?
В.2: Есть ли способ просмотреть файл XML до и после применения принудительного закрытия, чтобы помочь отладить ситуацию. Спасибо!