Тестирование на устройстве Blackberry - добавление и удаление приложения несколько раз

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

Будем благодарны вам за любую информацию.

Blackberry Bold 9000. 4.6 ОС. протестировано как с SD-картой, так и без SD-карты.


person Kai    schedule 11.06.2010    source источник


Ответы (2)


Объекты, хранящиеся в PersistentStore, автоматически удаляются при удалении, если их интерфейсы были определены в вашем проекте. Если они взяты из стандартного API BlackBerry, они останутся до тех пор, пока не будут удалены. Например, если вы сохраните строку в PersistentStore, она останется в PersistentStore, но если вы сохраните созданный вами класс, он будет удален при удалении. Поэтому, если вы хотите, чтобы эти объекты удалялись автоматически, просто создайте класс-оболочку и сохраните его.

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

person Jonathan    schedule 11.06.2010
comment
Точно - см. stackoverflow.com/questions/2879406/ для того же типа информации (элемент 2) - person Marc Novakowski; 11.06.2010
comment
Есть проблема с использованием собственных классов в постоянном хранилище - как пользователь, когда вы удаляете приложение, вы ожидаете, что все его данные будут удалены. Нет смысла тратить место в памяти для приложения, которое вы хотели удалить. В нашем приложении мы всегда используем оболочки, а не классы машинного кода. - person Tamar; 11.06.2010
comment
Спасибо. Когда придет время, мне придется модифицировать это приложение. На данный момент я просто написал функцию, которая просматривает изображения и удаляет их, а также PersistentStore.destroyPersistentObject (ключ); Я могу вызвать их при запуске приложения, и оно стирает данные. Мои тесты прямо сейчас связаны больше с первой установкой, а не с удалением приложения, о чем я расскажу позже. - person Kai; 12.06.2010
comment
Также имейте в виду, что это не обязательно должна быть сложная оболочка или что-то в этом роде - это может быть так же просто, как создание класса, расширяющего Hashtable, без дополнительного кода. - person Marc Novakowski; 12.06.2010

Еще одно решение, которое вы могли бы реализовать, - сделать ваше приложение в некоторой степени осведомленным о своих данных.

Создайте простое значение String, которое вы сохраните (или, при желании, сохраните его в Hashtable, чтобы вы могли сохранить таким образом многие свойства), которое включает «Version».

При запуске приложения с графическим интерфейсом сравните сохраненную «версию» с текущей версией приложения. Если сохраненная версия не существует или существует и совпадает, не предпринимайте никаких действий.

Если он существует и не соответствует, автоматически очистить старые сохраненные данные; или, в качестве альтернативы, попросите пользователя узнать, хотят ли они, чтобы эти данные были удалены (какой из них лучше, будет зависеть от вашей реализации)

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

(Помимо бессовестного саморекламы, я на самом деле сейчас работаю над разделяемой библиотекой для Blackberry, которая значительно упрощает управление сохраняемостью, а также резервное копирование / восстановление данных рабочего стола. Я делаю это в рамках проекта BBSSH , но я разделю его на отдельную библиотеку основных компонентов и опубликую под двойной GPL / дополнительной коммерческой лицензией. Он будет содержать хуки для очистки данных и управления версиями данных.)

person Marc Paradise    schedule 11.06.2010
comment
OP не сможет использовать CodeModuleListener, потому что он был добавлен только в OS 5.0, и это приложение тестируется в 4.6. - person Jonathan; 12.06.2010