Мое приложение основано на DashboardActivity.Другое действие называется News.
В этом новостном действии я загружаю информацию из Интернета с помощью AsyncTask.Пользователь может отойти от этого действия и запустить другие, и я хотел бы загрузить информацию только один раз в течение жизненного цикла приложения.
То есть то, что я хочу, это:
- Пользователь запускает приложение, переходит в Новости, информация загружается.
- Приложение запоминает, что информация была загружена, поэтому, если Новости запускаются снова, информация не будет загружена.
- Когда приложение остановлено (скажем, пользователь нажимает кнопку «Назад» из основного действия), приложение должно «забыть», что информация была загружена.Поэтому в следующий раз, когда приложение будет запущено, информация должна быть снова загружена при запуске News.
Я думал об этом с помощью SharedPreferences.
Вот как это выглядит в News:
int news_loaded = 0;
public static final String PREFS_NAME = "MyPrefsFile";
static SharedPreferences preferences;
SharedPreferences.Editor editor;
public void onCreate(Bundle savedInstanceState)
{
....
preferences = getSharedPreferences(PREFS_NAME, 0);
editor = preferences.edit();
news_loaded = preferences.getInt("news_loaded", 2);
<<start asynctask here>>
}
В doInBackground
AsyncTask:
if(news_loaded == 0)
<<download info>>
В onPostExecute
AsyncTask (если информация была загружена только):
editor.putInt("news_loaded", 1);
editor.commit();
Вот метод onStop
DashboardActivity:
public static final String PREFS_NAME = "MyPrefsFile";
static SharedPreferences preferences;
SharedPreferences.Editor editor;
protected void onStop()
{
preferences = getSharedPreferences(PREFS_NAME, 0);
editor = preferences.edit();
editor.putInt("news_loaded", 0);
editor.commit();
super.onStop();
}
Проблема: news_loaded
всегда кажется равным 0, когда я запускаю операцию новостей.
Update
Это часть манифеста DashboardActivity:
<activity
android:name=".DashboardActivity"
android:launchMode="singleInstance"
android:configChanges="keyboardHidden|orientation"/>
Кажется, что onStop()
(и onDestroy()
) вызываются каждый раз, когда я нажимаю кнопку "назад" - неважно "как далеко в«Я занимаюсь разными видами деятельности.