2011-07-18 2 views
2

У меня есть android appand Я хочу сохранить намерение Android в базе данных как поле blob. Я знаю основы хранения и извлечения данных TEXT, INTEGER и т. Д., Типы стандартов в SQLite, поскольку мое приложение уже делает все это. Я не знаком с хранением и извлечением блоб. Я предполагаю, что blob - лучший способ, в отличие от хранения в виде строки и разбора и намерения. Возможно, это неверное предположение. Тонкие намерения могут быть именем пакета, URI, могут иметь дополнительные функции и т. Д. Вот почему я хотел бы хранить/извлекать все намерения, а не просто хранить детали.Хранение в Intent в базе данных SQLite с android

ответ

1

Используйте Parcelable интерфейс с Intent:

Parcel parcel; 
myIntent.writeToParcel(parcel); 

ContentValues values = new ContentValues(); 
values.put(MyField, parcel.createByteArray()); 
getContentResolver().insert(MyBaseColumn.MyTable.CONTENT_URI, values); 

Обратный процесс, чтобы получить его.

Если вы предпочитаете текст, вы можете рассмотреть возможность использования json.

+5

Это очень плохая идея. Из документов Android [link] (http://developer.android.com/reference/android/os/Parcel.html): «Посылка не является механизмом сериализации общего назначения. Этот класс (и соответствующий Parcelable API для размещения произвольные объекты в парцеллу) спроектирован как высокопроизводительный транспорт IPC. Таким образом, * не * целесообразно поместить любые данные Parcel в постоянное хранилище: изменения в базовой реализации любой из данных в Посылке могут отображать более старые данные не читаются ». – Anthony

8

Вы можете просто хранить намерение в струнном образом:

String intentDescription = intent.toUri(0); 
//Save the intent string into your database 

Позже вы можете восстановить Намерение:

String intentDescription = cursor.getString(intentIndex);  
Intent intent = Intent.parseUri(intentDescription, 0); 
+0

К сожалению, это не хранит флаги и все дополнительные функции. – JacksOnF1re

+1

@ JacksOnF1re это неправда. Пожалуйста, прочитайте [docs] (http://developer.android.com/reference/android/content/Intent.html#toUri (int)). «URI содержит данные Intent в качестве базового URI с дополнительным фрагментом, описывающим действие, категории, тип, флаги, пакет, компонент и дополнительные функции». – mattgmg1990

+0

Выполнение Intent.parseUri() не очень хорошо (он вызывает String.startsWith слишком много раз). – sandrstar

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