2012-04-20 1 views
0

Я создаю приложение для Android, которое находит близлежащие точки доступа Wi-Fi. У меня есть xml-файл, который включает в себя GeoLocations горячих точек, xml-файл находится в папке res/xml приложения. Я хочу загрузить обновленный xml-файл при запуске приложения. У меня есть два вопроса:Загрузите XML-файл, когда приложение запустится и переключится на его использование.

  1. Shoud Я загружаю xml-файл во внутреннее хранилище или внешнее хранилище и почему? Если я должен загрузить файл xml во внутреннем хранилище, как я могу это сделать?
  2. Я хотел бы, чтобы пользователь мог использовать первоначально внедренный xml-файл при первом запуске приложения и переключиться на новый загружаемый xml-файл при завершении загрузки. Как я могу достичь этого легко?

Благодаря

+0

Считаете ли вы использование SQLite? Это намного быстрее, чем xml-файлы. Вы можете начать с проверки того, что ваша база данных пуста, поместите ваши данные xml там, где она есть, а затем загрузите остальную информацию с сервера и обновите ее каждый раз, когда вам нужно. –

ответ

1

Посмотрите на странице Google, о хранении данных на Android. http://developer.android.com/guide/topics/data/data-storage.html

Вы можете скачать XML-файл в довольно простой ситуации. Другой вопрос, как у вас был задан вопрос здесь:

Download a file with Android, and showing the progress in a ProgressDialog

В этом примере файл будет сохранен на SD-карте. Обязательно изменить OutputStream, указывающий на SD-карту, чтобы она указывала на частное хранение, а эталонная страница описывает:

FileOutputStream fos = openFileOutput(your_xml_filename, Context.MODE_PRIVATE); 

Для того, чтобы перейти на новый XML как можно более простым, я бы инкапсулировать все связанные с XML функции в одном классе и обеспечить простой способ перехода на новый XML. Например,

class XMLUser { 
    private Location someLocation; 

    public XMLUser(String pathToXml) { 
     readxmlAndSetLocations(pathToXml);  
    } 
} 

Тогда вы бы инициализировать новый объект XMLUser всякий раз, когда вы должны изменить файл XML. Как так:

XMLUser xmlStuff = new XMLUser(PATH_TO_RES_FILE); 
//... do something with it 
//... update found 
XMLUser xmlStuff = new XMLUser(PATH_TO_PRIVATEDATA_FILE); 

Другим способом было бы использовать один и тот же объект и просто обновить местоположения из файла XML:

class XMLUser { 
     private Location someLocation; 

     public void updateLocations(String pathToXml) { 
      //Read your xml here and update the locations accordingly.  
     } 
    } 

например

XMLUser xmlStuff = new XMLUser(PATH_TO_RES_FILE); 
//... do something with it 
//... update found 
xmlStuff.updateLocations(PATH_TO_UPDATED_XML); 

Ваши вопросы позволяют принимать самые разнообразные ответы, поэтому я не могу дать быстрый и точный результат.

И да, я рекомендую сохранять данные XML во внутреннем хранилище. XML-файл должен быть достаточно маленьким по размеру, чтобы не создавать проблем, и логически он связан с внутренней функциональностью приложения. С которым пользователь не должен вмешиваться. Кроме того, внутреннее хранилище не снимается, поэтому, если пользователь изменит SD-карту, обновленные данные все равно будут там.

 Смежные вопросы

  • Нет связанных вопросов^_^