Подтвердить что ты не робот

IOS AppDelegate эквивалент в Android

У меня есть простое приложение для Android с одним действием. Эта операция загружает небольшой XML файл и отображает содержимое для пользователя. В настоящее время я запускаю загрузку в методе Activity onStart.

Я понимаю, что действия разрушаются и воссоздаются при изменении ориентации устройства. Поэтому, когда пользователи поворачивают мое приложение, XML файл загружается снова. Я хочу, чтобы приложение загрузило файл только один раз, так как оно не меняется более чем несколько раз в день. Поэтому я хотел бы, чтобы какой-то объект сохранил загруженные данные, чтобы локальные данные могли быть повторно использованы при изменении ориентации устройства. Какой идеальный объект в Android сохранить данные?

В iOS я использовал AppDelegate для загрузки данных один раз и сохранил его. Затем viewController, который отображает данные, может просто повторно использовать локальные данные, если они будут уничтожены и повторно созданы.

4b9b3361

Ответ 1

Я предполагаю, что вы видели эту страницу:

http://developer.android.com/guide/topics/data/data-storage.html#pref

В зависимости от типа данных из файла XML (если это довольно простые данные) использование "общих настроек" может быть простым способом. Вы можете переписать новые данные из XML, когда вам нужно, пока вы все еще можете использовать его из общих настроек.

Ответ 2

Вам необходимо создать свой собственный подкласс приложения и указать его в AndroidManifest.xml. После этого новый экземпляр этого класса будет создан и доступен во всем приложении.

Пример:

Manifest.xml

<application name="YourApp"> 

YourApp.java

class YourApp extends Application {
    private String yourState;

    public void setState(String state){
        yourState = state;
    }
    public String getState(){
        return yourState;
    }
 }

YourActivity.java

 class YourActivity extends Activity {
    @Override
    public void onCreate(Bundle bundle){
        YourApp appState = ((YourApp)getApplicationContext());// you can use getApplication() as well in the activity
        String state = appState.getState();
    }
 }

Подробнее о приложении

Ответ 3

Вы должны создать объект модели (свой собственный класс), чтобы сохранить данные как для iOS, так и для android. IMHO.