2016-03-04 3 views
0

Я разрабатываю приложение, использующее LibGDX.LibGDX: как сэкономить большой объем данных?

Я хотел был бы сохранить много предложений, каждое с индексом и датой когда оно было создано.

Пользователь должен уметь находить или выбирать конкретное предложение.

Должны быть предложения, которые уже созданы в приложении (например, в папке с ресурсами), и пользователь также должен иметь возможность создавать свои собственные предложения и сохранять их.

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

Должен ли я использовать файлы JSON, файлы csv, базу данных SQL или что-то еще? А когда, то как это сделать с LibGDX?

Я был бы рад, если бы вы могли дать мне некоторую информацию по этой теме или советам!

+0

Обязательно укажите пример того, что вы пробовали, или, по крайней мере, то, что вы изучали при проведении исследований. – jkdba

+0

JSON будет проще всего, потому что у LibGDX есть встроенная поддержка, и вы можете протестировать его в настольных сборках. SQLite было бы лучше, если бы количество предложений было огромным, так что вы не хотите загружать весь набор в память. Но это будет сложнее реализовать, потому что вам нужно будет написать некоторые интерфейсы и код для Android. – Tenfour04

+0

@JohnK Я пока ничего не пробовал, потому что не был уверен, с чего начать. Но я посмотрел на вещи, о которых я упоминал в своем вопросе. – red1575

ответ

2

Предпочтения - это путь, если вы не говорите о тысячах пользовательских предложений. Это также зависит от масштабируемости, если вы просто хотите добавить строки, это делает работу. Если вам нужно найти определенную строку, вам, вероятно, придется загрузить их все. Предпочтения хранятся локально, поэтому каждый модуль имеет легкий доступ к нему с помощью интерфейса Gdx. Это, как вы используете Preferences

Preferences preferences = Gdx.app.getPreferences("filename");  
    preferences.putString(Key<String>, Value); 
    preferences.flush(); 

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

int stringCount = preferences.getInteger("string_count"); // Get current string count 
    preferences.putInteger("string_counr", stringCount++); // Increment stringCount and put it back in preferences 
    preferences.putString("userstring_" + stringCount, someString); // Create string using incremented stringCount. 
    preferences.flush(); //Store data 

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

int stringCount = preferences.getInteger("string_count"); 
    List<String> userStrings = new ArrayList<String>(); 
    for (int i = 1; i <= stringCount; i++) 
    { 
     userStrings.add(preferences.getString("userstring_" + stringCount); 
    } 

Строки хранятся на окнах в users/username/.prefs/filename

Я хранится несколько сотен полей в настройках без каких-либо проблем. Это не самый быстрый на flush(), но вы, вероятно, можете хранить все предложения и пакетные файлы. Если ваши потребности не слишком требовательные, то их легко сделать. Если вы ищете гораздо более масштабируемый вариант, вы должны пойти с JSON, XML, языком сценариев или, возможно, написать для себя свой собственный читатель/писатель. База данных будет излишней, если вы не хотите связать пользователей и другие данные с этими предложениями.

+0

Спасибо за ваш ответ. У меня есть вопрос: я хотел бы, например, получить все предложения, отсортированные по дате или по длине, или получить только избранные предложения и т. Д. Как вы думаете, было бы лучше использовать для этого базу данных? – red1575

+0

Поскольку вы увеличиваете каждое новое предложение, оно уже сортируется по времени. Вы можете сохранить даты. Когда вы храните их в структуре данных, вы можете сортировать по длине, альфа или что угодно. Если вам действительно нужна дата, вы всегда можете связать запись даты в префиксах с таким количеством инкремента в качестве ссылки между датой и предложением. Однако, если вы хотите создать много этих ссылок, в конечном итоге база данных будет более полезной. – Madmenyo

+0

Allright, ty: D – red1575

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